пожалуйста, обратите внимание, что большинство проголосовавших ответов относятся к датам timezoneoe-naive date, в то время как мы видим, что в производственной среде все больше и больше сервисов по всему миру соединяются вместе, а дата-время с учетом часовых поясов становится необходимым стандартом
Было бы хорошо, если бы этот ответ охватывал часовые пояса (например, UTC) и, возможно, начинался бы с time.time ().
Грег Линдал
4
@Toskan формат не был частью вопроса, поэтому он не должен быть частью ответа. Уже есть ссылка на дополнительную документацию модуля, которая содержит такие вещи, как форматирование.
JiyuuSensei
В какой версии Python был дан первоначальный ответ? Просто набрав datetime.datetime.now()в моей интерактивной консоли Python 2.7 (IronPython еще не обновился), я получаю то же поведение, что и в новом примере, использованном print()в ответе. Я не повторил успешно то, что показывает исходный ответ (datetime.datetime (2009, 1, 6, 15, 8, 24, 78915)). (Не то, чтобы я действительно этого хотел, поведение print () предпочтительнее, но мне любопытно.)
RTHarston
@BobVicktor: Python 2.7, 3.7 и 3.8 все дают одинаковое поведение для меня, не уверен, что вы видите.
Harley
@HarleyHolcombe Хм ... может быть, это вещь IronPython? Когда я datetime.now()print(datetime.now())
Все, что он просит, это узнать текущее время, а не отображать его.
pppery
@ppperry, тогда просто назначьте переменную для ответа Рэя, например: myTime = str (datetime.now ()) .
Лукас
2
Не имеет значения; шаг "str" не входит в
суть
4
@pppery Также опера не говорит, что речь идет не о получении строки времени. Оператор вообще не говорит, что они хотят делать со временем, так почему плохо показывать, как превратить его в строку? Большинство ответов говорят о получении строки из времени, так что, похоже, это общий случай использования, так зачем выделять ответ Рэя? Какой смысл просто получать время, не зная, как с этим что-то сделать? Вы можете напечатать это или сделать математику на нем, и только несколько ответов показывают, как сделать это на математике, поэтому я думаю, что печать / получение строки - обычное использование. ;-) (я знаю, что это то, для чего я пришел.)
RTHarston
1
Тот факт, что в этом ответе содержится более 440 голосов, говорит о том, что незначительное добавление метода строк было полезно многим людям.
Джон
361
Как узнать текущее время в Python?
timeмодуль
timeМодуль обеспечивает функции , которые говорит нам время в «секундах с начала эпохи», а также другие коммунальные услуги.
import time
Unix Epoch Time
Это формат, в котором вы должны получить временные метки для сохранения в базах данных. Это простое число с плавающей запятой, которое можно преобразовать в целое число. Это также хорошо для арифметики в секундах, так как представляет количество секунд с 1 января 1970 года 00:00:00, и это свет памяти относительно других представлений времени, которые мы будем смотреть дальше:
>>> time.time()1424233311.771502
Эта временная метка не учитывает високосных секунд, поэтому она не линейна - високосные секунды игнорируются. Таким образом, хотя он не эквивалентен международному стандарту UTC, он близок, и, следовательно, довольно хорош для большинства случаев ведения учета.
Однако это не идеально для планирования человека. Если у вас есть будущее событие, которое вы хотите провести в определенный момент времени, вам нужно сохранить это время со строкой, которую можно проанализировать в объекте datetime или сериализованном объекте datetime (они будут описаны позже).
time.ctime
Вы также можете представлять текущее время так, как предпочитает ваша операционная система (что означает, что оно может меняться при изменении системных настроек, поэтому не полагайтесь на то, что оно будет стандартным для всех систем, как я ожидал от других) , Это обычно удобно для пользователя, но обычно не приводит к строкам, которые можно сортировать в хронологическом порядке:
>>> time.ctime()'Tue Feb 17 23:21:56 2015'
Вы также можете перевести метки времени в удобочитаемую форму с помощью ctime:
>>> time.ctime(1424233311.771502)'Tue Feb 17 23:21:51 2015'
Это преобразование также не подходит для ведения записей (за исключением текста, который будет анализироваться только людьми - и с улучшенным оптическим распознаванием символов и искусственным интеллектом, я думаю, число этих случаев уменьшится).
datetime модуль
datetimeМодуль также весьма полезно здесь:
>>>import datetime
datetime.datetime.now
Метод datetime.nowкласса, который возвращает текущее время. Он использует time.localtimeбез информации о часовом поясе (если не указан, в противном случае см. Часовой пояс ниже). Он имеет представление (которое позволит вам воссоздать эквивалентный объект), отраженное в оболочке, но при печати (или приведении к a str) оно имеет читабельный (и почти ISO) формат, а лексикографическая сортировка эквивалентна хронологический вид:
UTC - это стандарт времени, который почти эквивалентен часовому поясу GMT. (Хотя GMT и UTC не меняются на летнее время, их пользователи могут переключаться на другие часовые пояса, такие как британское летнее время, летом).
дата и время
Однако ни один из объектов datetime, которые мы создали до сих пор, не может быть легко преобразован в различные часовые пояса. Мы можем решить эту проблему с помощью pytzмодуля:
>>>import pytz
>>> then = datetime.datetime.now(pytz.utc)>>> then
datetime.datetime(2015,2,18,4,55,58,753949, tzinfo=<UTC>)
Эквивалентно, в Python 3 у нас есть timezoneкласс с присоединенным timezoneэкземпляром utc , который также делает объект часовой пояс осведомленным (но преобразование в другой часовой пояс без удобного pytzмодуля оставлено в качестве упражнения для читателя):
Вы также можете сделать наивный объект datetime осведомленным с помощью метода pytztimezone localizeили заменив атрибут tzinfo (with replace, это делается вслепую), но это более поздние варианты, чем лучшие практики:
pytzМодуль позволяет нам сделать наши datetimeобъекты TIMEZONE осведомленными и конвертировать раз в сотни часовых поясов , доступных в pytzмодуле.
Можно было бы якобы сериализовать этот объект для УСВ и хранить , что в базе данных, но это потребовало бы гораздо больше памяти и более склонны к ошибкам , чем просто хранение времени Unix Epoch, который я продемонстрировал первый.
Другие способы просмотра времени гораздо более подвержены ошибкам, особенно при работе с данными, которые могут поступать из разных часовых поясов. Вы хотите, чтобы не было путаницы относительно того, для какого часового пояса была предназначена строка или сериализованный объект datetime.
Если вы отображаете время с Python для пользователя, он ctimeработает хорошо, не в таблице (обычно не очень хорошо сортируется), но, возможно, в часах. Однако я лично рекомендую при работе со временем в Python использовать либо время Unix, либо datetimeобъект UTC с учетом часового пояса .
import requests
from lxml import html
page = requests.get('http://tycho.usno.navy.mil/cgi-bin/timer.pl')
tree = html.fromstring(page.content)print(tree.xpath('//html//body//h3//pre/text()')[1])
Если вы живете в округе Колумбия (как и я), задержка может быть не слишком плохой ...
@ C8H10N4O2 Хотя вы правы в том, что другие ответы предполагают, что ваш компьютер уже знает правильное время, этот ответ предполагает, что у компьютера есть подключение к Интернету, что вы находитесь в США, и что они никогда не снимут этот файл / изменить ссылку. В этом ответе гораздо больше предположений, чем принято. Все еще умный тем не менее
sudobangbang
34
Используя панд, чтобы узнать текущее время, можно решить проблему:
import pandas as pd
print(pd.datetime.now())print(pd.datetime.now().date())print(pd.datetime.now().year)print(pd.datetime.now().month)print(pd.datetime.now().day)print(pd.datetime.now().hour)print(pd.datetime.now().minute)print(pd.datetime.now().second)print(pd.datetime.now().microsecond)
>>>from time import strftime
>>>strftime("%m/%d/%Y %H:%M")01/09/201513:11
Кроме того, эта таблица является необходимой ссылкой для выбора соответствующих кодов формата, чтобы получить дату, отформатированную так, как вы этого хотите (из документации Python «datetime» здесь ).
strftime(time_format)возвращает текущее местное время в виде строки, соответствующей заданному time_format. Примечание: time.strftime()и datetime.strftime()поддерживает различные наборы директив, например, %zне поддерживается time.strftime()в Python 2 .
Jfs
1
Лучше практиковать использование даты вместо времени?
Кристен Дж.
2
Многие timeфункции модуля являются тонкими обертками вокруг соответствующих функций C. datetimeэто более высокий уровень, и он обычно более переносим.
JFS
25
если вы уже используете numpy, то можете напрямую использовать функцию numpy.datetime64 ().
import numpy as np
str(np.datetime64('now'))
только на дату:
str(np.datetime64('today'))
или, если вы уже используете pandas, вы можете использовать функцию pandas.to_datetime ()
datetime.now()возвращает текущее время как наивный объект datetime, который представляет время в местном часовом поясе. Это значение может быть неоднозначным, например, во время переходов DST («отступление»). Чтобы избежать двусмысленности, следует использовать часовой пояс UTC:
from datetime import datetime
utc_time = datetime.utcnow()print(utc_time)# -> 2014-12-22 22:48:59.916417
Или объект с указанием часового пояса, к которому прикреплена соответствующая информация о часовом поясе (Python 3.2+):
from datetime import datetime, timezone
now = datetime.now(timezone.utc).astimezone()print(now)# -> 2014-12-23 01:49:25.837541+03:00
import datetime
date_time = datetime.datetime.now()
date = date_time.date()# Gives the date
time = date_time.time()# Gives the timeprint date.year, date.month, date.day
print time.hour, time.minute, time.second, time.microsecond
Do dir(date)или любые переменные, включая пакет. Вы можете получить все атрибуты и методы, связанные с переменной.
Я думаю, что вы хотите сказать "datetime.now (). Strftime (...)"
hlin117
да, это можно сделать, как вы сказали. "Datetime.datetime.now () STRFTIME. (" % H:% M:% S:% МС ")"
user2030113
3
% MS не дает вам миллисекунд !!
ZF007
16
По умолчанию now()функция возвращает вывод в YYYY-MM-DD HH:MM:SS:MSформате. Используйте приведенный ниже пример скрипта, чтобы получить текущую дату и время в скрипте Python и распечатать результаты на экране. Создайте файл getDateTime1.pyс содержанием ниже.
Этот вопрос не нуждается в новом ответе только ради этого ... блестящая новая игрушка / модуль, однако, является достаточным оправданием. Это будучи библиотекой маятника , которая, похоже, выполняет те действия, которые предпринимала стрелка, за исключением тех недостатков, которые присущи стрелке.
Есть много стандартов, которые нужно учитывать, включая множество RFC и ISO, о которых нужно беспокоиться. Когда-нибудь перепутать их; не беспокойтесь, взгляните немного. dir(pendulum.constants)Там есть нечто большее, чем форматы RFC и ISO.
Когда мы говорим местный, что мы имеем в виду? Ну, я имею в виду:
Предположительно, большинство из вас значат где-то еще.
И на это идет. Короче говоря: маятник пытается сделать для даты и времени то, что запросы сделали для HTTP. Это стоит учитывать, особенно из-за простоты использования и обширной документации.
Я хочу получить время с миллисекундами. Простой способ получить их:
import time, datetime
print(datetime.datetime.now().time())# 11:20:08.272239# Or in a more complicated wayprint(datetime.datetime.now().time().isoformat())# 11:20:08.272239print(datetime.datetime.now().time().strftime('%H:%M:%S.%f'))# 11:20:08.272239# But do not use this:print(time.strftime("%H:%M:%S.%f", time.localtime()), str)# 11:20:08.%f
Но я хочу только миллисекунды , верно? Самый короткий способ получить их:
import time
time.strftime("%H:%M:%S", time.localtime())+'.%d'%(time.time()%1*1000)# 11:34:23.751
Добавьте или удалите нули из последнего умножения, чтобы скорректировать количество десятичных знаков, или просто:
Потому что никто еще не упомянул об этом, и это то, с чем я столкнулся недавно ... метод pyutz timezone from) () в сочетании с utcnow () для datetime - лучший способ найти полезное текущее время (и дату) в любом часовом поясе.
Этот вопрос относится к Python, но поскольку Django является одной из наиболее широко используемых сред Python, важно отметить, что если вы используете Django, вы всегда можете использовать timezone.now()вместоdatetime.datetime.now() . Первый - это часовой пояс, а второй - нет.
Ответы:
Использование:
И просто время:
Смотрите документацию для получения дополнительной информации.
Чтобы сохранить набор текста, вы можете импортировать
datetime
объект изdatetime
модуля:Затем удалите ведущую
datetime.
из всего вышеперечисленного.источник
datetime.datetime.now()
в моей интерактивной консоли Python 2.7 (IronPython еще не обновился), я получаю то же поведение, что и в новом примере, использованномprint()
в ответе. Я не повторил успешно то, что показывает исходный ответ (datetime.datetime (2009, 1, 6, 15, 8, 24, 78915)). (Не то, чтобы я действительно этого хотел, поведение print () предпочтительнее, но мне любопытно.)datetime.now()
print(datetime.now())
Вы можете использовать
time.strftime()
:источник
time
модуль противdatetime
модуля?localtime()
вместо,gmtime()
чтобы получить ваше местное время.datetime
сравнению сtime
.Для этого примера вывод будет таким:
'2013-09-18 11:16:32'
Вот список
strftime
директив .источник
Аналогичен ответу Харли , но используйте
str()
функцию для быстрого, немного грязного, чуть более удобочитаемого формата:источник
time
модульtime
Модуль обеспечивает функции , которые говорит нам время в «секундах с начала эпохи», а также другие коммунальные услуги.Unix Epoch Time
Это формат, в котором вы должны получить временные метки для сохранения в базах данных. Это простое число с плавающей запятой, которое можно преобразовать в целое число. Это также хорошо для арифметики в секундах, так как представляет количество секунд с 1 января 1970 года 00:00:00, и это свет памяти относительно других представлений времени, которые мы будем смотреть дальше:
Эта временная метка не учитывает високосных секунд, поэтому она не линейна - високосные секунды игнорируются. Таким образом, хотя он не эквивалентен международному стандарту UTC, он близок, и, следовательно, довольно хорош для большинства случаев ведения учета.
Однако это не идеально для планирования человека. Если у вас есть будущее событие, которое вы хотите провести в определенный момент времени, вам нужно сохранить это время со строкой, которую можно проанализировать в объекте datetime или сериализованном объекте datetime (они будут описаны позже).
time.ctime
Вы также можете представлять текущее время так, как предпочитает ваша операционная система (что означает, что оно может меняться при изменении системных настроек, поэтому не полагайтесь на то, что оно будет стандартным для всех систем, как я ожидал от других) , Это обычно удобно для пользователя, но обычно не приводит к строкам, которые можно сортировать в хронологическом порядке:
Вы также можете перевести метки времени в удобочитаемую форму с помощью
ctime
:Это преобразование также не подходит для ведения записей (за исключением текста, который будет анализироваться только людьми - и с улучшенным оптическим распознаванием символов и искусственным интеллектом, я думаю, число этих случаев уменьшится).
datetime
модульdatetime
Модуль также весьма полезно здесь:datetime.datetime.now
Метод
datetime.now
класса, который возвращает текущее время. Он используетtime.localtime
без информации о часовом поясе (если не указан, в противном случае см. Часовой пояс ниже). Он имеет представление (которое позволит вам воссоздать эквивалентный объект), отраженное в оболочке, но при печати (или приведении к astr
) оно имеет читабельный (и почти ISO) формат, а лексикографическая сортировка эквивалентна хронологический вид:Дата и время-х
utcnow
Вы можете получить объект datetime в глобальном стандарте времени UTC, выполнив это:
UTC - это стандарт времени, который почти эквивалентен часовому поясу GMT. (Хотя GMT и UTC не меняются на летнее время, их пользователи могут переключаться на другие часовые пояса, такие как британское летнее время, летом).
дата и время
Однако ни один из объектов datetime, которые мы создали до сих пор, не может быть легко преобразован в различные часовые пояса. Мы можем решить эту проблему с помощью
pytz
модуля:Эквивалентно, в Python 3 у нас есть
timezone
класс с присоединеннымtimezone
экземпляром utc , который также делает объект часовой пояс осведомленным (но преобразование в другой часовой пояс без удобногоpytz
модуля оставлено в качестве упражнения для читателя):И мы видим, что мы можем легко преобразовать в часовые пояса из исходного объекта UTC.
Вы также можете сделать наивный объект datetime осведомленным с помощью метода
pytz
timezonelocalize
или заменив атрибут tzinfo (withreplace
, это делается вслепую), но это более поздние варианты, чем лучшие практики:pytz
Модуль позволяет нам сделать нашиdatetime
объекты TIMEZONE осведомленными и конвертировать раз в сотни часовых поясов , доступных вpytz
модуле.Можно было бы якобы сериализовать этот объект для УСВ и хранить , что в базе данных, но это потребовало бы гораздо больше памяти и более склонны к ошибкам , чем просто хранение времени Unix Epoch, который я продемонстрировал первый.
Другие способы просмотра времени гораздо более подвержены ошибкам, особенно при работе с данными, которые могут поступать из разных часовых поясов. Вы хотите, чтобы не было путаницы относительно того, для какого часового пояса была предназначена строка или сериализованный объект datetime.
Если вы отображаете время с Python для пользователя, он
ctime
работает хорошо, не в таблице (обычно не очень хорошо сортируется), но, возможно, в часах. Однако я лично рекомендую при работе со временем в Python использовать либо время Unix, либоdatetime
объект UTC с учетом часового пояса .источник
Делать
t
- число с плавающей запятой, подходящее для измерения временного интервала.Существует некоторая разница для платформ Unix и Windows.
источник
Это выводит текущий GMT в указанном формате. Также есть
localtime()
метод.Эта страница имеет более подробную информацию.
источник
Все предыдущие ответы являются хорошими предложениями, но мне проще всего их использовать
ctime()
:Это дает красиво отформатированное строковое представление текущего местного времени.
источник
Самый быстрый способ это:
источник
Если вам нужно текущее время как
time
объект:источник
.isoformat()
находится в документации, но еще не здесь (это очень похоже на ответ @Ray Vega):источник
Почему бы не спросить Военно-морскую обсерваторию США , официального хронометриста ВМС США?
Если вы живете в округе Колумбия (как и я), задержка может быть не слишком плохой ...
источник
Используя панд, чтобы узнать текущее время, можно решить проблему:
Вывод:
источник
Это то, что я закончил с:
Кроме того, эта таблица является необходимой ссылкой для выбора соответствующих кодов формата, чтобы получить дату, отформатированную так, как вы этого хотите (из документации Python «datetime» здесь ).
источник
strftime(time_format)
возвращает текущее местное время в виде строки, соответствующей заданномуtime_format
. Примечание:time.strftime()
иdatetime.strftime()
поддерживает различные наборы директив, например,%z
не поддерживаетсяtime.strftime()
в Python 2 .time
функции модуля являются тонкими обертками вокруг соответствующих функций C.datetime
это более высокий уровень, и он обычно более переносим.если вы уже используете numpy, то можете напрямую использовать функцию numpy.datetime64 ().
только на дату:
или, если вы уже используете pandas, вы можете использовать функцию pandas.to_datetime ()
или,
источник
Вы можете использовать
time
модуль:Использование капитала
Y
дает полный год, а использованиеy
даст06/02/15
.Вы также можете использовать следующий код для увеличения времени:
источник
datetime.now()
возвращает текущее время как наивный объект datetime, который представляет время в местном часовом поясе. Это значение может быть неоднозначным, например, во время переходов DST («отступление»). Чтобы избежать двусмысленности, следует использовать часовой пояс UTC:Или объект с указанием часового пояса, к которому прикреплена соответствующая информация о часовом поясе (Python 3.2+):
источник
Do
dir(date)
или любые переменные, включая пакет. Вы можете получить все атрибуты и методы, связанные с переменной.источник
import datetime
тогда этоdatetime.datetime.now()
\ n, еслиfrom datetime import datetime
это такdatetime.now()
источник
По умолчанию
now()
функция возвращает вывод вYYYY-MM-DD HH:MM:SS:MS
формате. Используйте приведенный ниже пример скрипта, чтобы получить текущую дату и время в скрипте Python и распечатать результаты на экране. Создайте файлgetDateTime1.py
с содержанием ниже.Вывод выглядит так:
источник
Этот вопрос не нуждается в новом ответе только ради этого ... блестящая новая игрушка / модуль, однако, является достаточным оправданием. Это будучи библиотекой маятника , которая, похоже, выполняет те действия, которые предпринимала стрелка, за исключением тех недостатков, которые присущи стрелке.
Например, ответ на оригинальный вопрос:
Есть много стандартов, которые нужно учитывать, включая множество RFC и ISO, о которых нужно беспокоиться. Когда-нибудь перепутать их; не беспокойтесь, взгляните немного.
dir(pendulum.constants)
Там есть нечто большее, чем форматы RFC и ISO.Когда мы говорим местный, что мы имеем в виду? Ну, я имею в виду:
Предположительно, большинство из вас значат где-то еще.
И на это идет. Короче говоря: маятник пытается сделать для даты и времени то, что запросы сделали для HTTP. Это стоит учитывать, особенно из-за простоты использования и обширной документации.
источник
Текущее время часового пояса
источник
Попробуйте модуль стрелки с http://crsmithdev.com/arrow/ :
Или версия UTC:
Чтобы изменить его вывод, добавьте .format ():
Для определенного часового пояса:
Час назад:
Или если вы хотите суть.
источник
arrow.now('Time/Zone')
может произойти сбой в некоторых часовых поясах (arrow
используетdateutil
, в котором нарушены utc -> локальные преобразования , которые используются внутриarrow.now()
. Примечание:pytz
такой проблемы нет . Также есть другие проблемы, связанные сЯ хочу получить время с миллисекундами. Простой способ получить их:
Но я хочу только миллисекунды , верно? Самый короткий способ получить их:
Добавьте или удалите нули из последнего умножения, чтобы скорректировать количество десятичных знаков, или просто:
источник
Вы можете использовать эту функцию, чтобы получить время (к сожалению, оно не говорит AM или PM):
Чтобы объединить часы, минуты, секунды и миллисекунды позже, вы можете использовать эти функции:
Час:
Минуты:
Во-вторых:
миллисекунды:
источник
Если вам нужна текущая временная метка в мс (например, для измерения времени выполнения), вы также можете использовать модуль timeit:
источник
Потому что никто еще не упомянул об этом, и это то, с чем я столкнулся недавно ... метод pyutz timezone from) () в сочетании с utcnow () для datetime - лучший способ найти полезное текущее время (и дату) в любом часовом поясе.
Если все, что вам нужно, это время, вы можете получить это с
local_time.time()
.источник
Вот то, что я использую, чтобы получить время без необходимости форматировать. Некоторым людям не нравится метод split, но он полезен здесь:
Он будет печататься в формате ЧЧ: ММ: СС.
источник
Этот вопрос относится к Python, но поскольку Django является одной из наиболее широко используемых сред Python, важно отметить, что если вы используете Django, вы всегда можете использовать
timezone.now()
вместоdatetime.datetime.now()
. Первый - это часовой пояс, а второй - нет.Посмотрите этот ТАК ответ и документ Django для деталей и обоснования
timezone.now()
.источник
Вы можете сделать это с помощью ctime ():
вывод:
Sat Sep 14 21:27:08 2019
Эти выходные данные различаются, поскольку возвращаемая временная метка
ctime()
зависит от вашего географического положения.источник