Вопрос: Как получить текущее время в Python


Каков модуль / метод, используемый для получения текущего времени?


1901


источник


Ответы:


Использование:

>>> import datetime
>>> datetime.datetime.now()
datetime(2009, 1, 6, 15, 8, 24, 78915)

И только время:

>>> datetime.datetime.time(datetime.datetime.now())
datetime.time(15, 8, 24, 78915)

То же, но немного более компактное:

>>> datetime.datetime.now().time()

Видеть документация Чтобы получить больше информации.

Чтобы сохранить ввод текста, вы можете импортировать datetimeобъект из datetimeмодуль:

>>> from datetime import datetime

Затем удалите ведущий datetime.от всего вышеперечисленного.


1935



Вы можете использовать time.strftime():

>>> from time import gmtime, strftime
>>> strftime("%Y-%m-%d %H:%M:%S", gmtime())
'2009-01-05 22:14:39'

771



Похожий на Ответ Харли , но используйте str()функция для быстрого n-грязного, немного более удобного для чтения формата:

>>> from datetime import datetime
>>> str(datetime.now())
'2011-05-03 17:45:35.177000'

399



>>> from datetime import datetime
>>> datetime.now().strftime('%Y-%m-%d %H:%M:%S')

В этом примере вывод будет выглядеть следующим образом: '2013-09-18 11:16:32'

Вот список STRFTIME ,


353



Как получить текущее время в Python?

timeмодуль

timeмодуль предоставляет функции, которые сообщают нам время в «секундах с эпохи», а также другие утилиты.

import time

Время эпохи Unix

Это формат, в который вы должны получить отметки времени для сохранения в базах данных. Это простое число с плавающей запятой, которое можно преобразовать в целое число. Это также полезно для арифметики в секундах, так как она представляет количество секунд с 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без информации о часовом поясе (если не указано, в противном случае см. информацию о часовом поясе ниже). Он имеет представление (которое позволит вам воссоздать эквивалентный объект), отраженный в оболочке, но при печати (или принуждении к str), он находится в формате для чтения (и почти ISO), а лексикографическая сортировка эквивалентна хронологической сортировке:

>>> datetime.datetime.now()
datetime.datetime(2015, 2, 17, 23, 43, 49, 94252)
>>> print(datetime.datetime.now())
2015-02-17 23:43:51.782461

DateTime-х utcnow

Вы можете получить объект datetime в UTC, глобальном стандарте, следующим образом:

>>> datetime.datetime.utcnow()
datetime.datetime(2015, 2, 18, 4, 53, 28, 394163)
>>> print(datetime.datetime.utcnow())
2015-02-18 04:53:31.783988

UTC - это стандарт времени, который почти эквивалентен часовому поясу GMT. (Хотя GMT и UTC не изменяются для летнего времени, их пользователи могут переключаться на другие временные интервалы, например, «Летнее время Великобритании» в течение лета).

datetime timezone

Однако ни один из объектов 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класс с utc timezoneэкземпляр, который также делает объект часового пояса осведомленным (но для преобразования в другой часовой пояс без удобного pytzмодуль остается в качестве упражнения для читателя):

>>> datetime.datetime.now(datetime.timezone.utc)
datetime.datetime(2015, 2, 18, 22, 31, 56, 564191, tzinfo=datetime.timezone.utc)

И мы видим, что мы можем легко преобразовать временные интервалы из исходного объекта utc.

>>> print(then)
2015-02-18 04:55:58.753949+00:00
>>> print(then.astimezone(pytz.timezone('US/Eastern')))
2015-02-17 23:55:58.753949-05:00

Вы также можете сделать наивный объект datetime осведомленным с помощью pytzчасовой пояс localizeметод или путем замены атрибута tzinfo (с помощью replace, это делается вслепую), но это более последние курорты, чем лучшие практики:

>>> pytz.utc.localize(datetime.datetime.utcnow())
datetime.datetime(2015, 2, 18, 6, 6, 29, 32285, tzinfo=<UTC>)
>>> datetime.datetime.utcnow().replace(tzinfo=pytz.utc)
datetime.datetime(2015, 2, 18, 6, 9, 30, 728550, tzinfo=<UTC>)

pytzмодуль позволяет нам datetimeобъектов, а также преобразовать время в сотни часовых поясов, доступных в pytzмодуль.

Можно было бы якобы сериализовать этот объект для времени UTC и хранить что в базе данных, но для этого потребуется гораздо больше памяти и более склонны к ошибке, чем просто сохранение времени Unix Epoch, которое я продемонстрировал в первую очередь.

Другие способы просмотра времени гораздо более подвержены ошибкам, особенно при работе с данными, которые могут поступать из разных часовых поясов. Вы хотите, чтобы не было никакой путаницы в отношении того, в какой временной зоне предназначалась строка или сериализованный объект datetime.

Если вы показываете время с Python для пользователя, ctimeработает красиво, а не в таблице (обычно не сортируется), но, возможно, в часах. Тем не менее, я лично рекомендую, имея дело со временем на Python, либо используя время Unix, либо часовой пояс, обозначающий UTC datetimeобъект.


181



Do

from time import time

t = time()
  • t - float number, good for time interval measurement.

There is some difference for Unix and Windows platforms.


110



>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %X +0000", gmtime())
'Tue, 06 Jan 2009 04:54:56 +0000'

That outputs the current GMT in the specified format. There is also a localtime() method.

This page has more details.


82



All good suggestions, but I find it easiest to use ctime() myself:

In [2]: from time import ctime
In [3]: ctime()
Out[3]: 'Thu Oct 31 11:40:53 2013'

This gives a nicely formatted string representation of current local time.


42



If you need current time as a time object:

>>> import datetime
>>> now = datetime.datetime.now()
>>> datetime.time(now.hour, now.minute, now.second)
datetime.time(11, 23, 44)

35