Как узнать текущее время в Python
Какой модуль/метод используется для получения текущего времени?
Ответы
Ответ 1
Использование:
>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2009, 1, 6, 15, 8, 24, 78915)
>>> print(datetime.datetime.now())
2018-07-29 09:17:13.812189
И просто время:
>>> datetime.datetime.now().time()
datetime.time(15, 8, 24, 78915)
>>> print(datetime.datetime.now().time())
09:17:51.914526
Смотрите документацию для получения дополнительной информации.
Чтобы сохранить ввод, вы можете импортировать объект datetime
из модуля datetime
:
>>> from datetime import datetime
Затем удалите ведущую datetime.
из всего вышеперечисленного.
Ответ 2
Вы можете использовать time.strftime()
:
>>> from time import gmtime, strftime
>>> strftime("%Y-%m-%d %H:%M:%S", gmtime())
'2009-01-05 22:14:39'
Ответ 3
from datetime import datetime
datetime.now().strftime('%Y-%m-%d %H:%M:%S')
Для этого примера вывод будет выглядеть следующим образом: '2013-09-18 11:16:32'
Вот список директив strftime
.
Ответ 4
Как и Harley answer, но используйте функцию str()
для быстрого n-грязного, немного более удобного для чтения формата:
>>> from datetime import datetime
>>> str(datetime.now())
'2011-05-03 17:45:35.177000'
Ответ 5
Как получить текущее время в 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
Однако ни один из объектов 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
timezone 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
с часовым поясом.
Ответ 6
Do
from time import time
t = time()
-
t
- число с плавающей точкой, хорошее для измерения временных интервалов.
Существует некоторая разница для платформ Unix и Windows.
Ответ 7
>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %X +0000", gmtime())
'Tue, 06 Jan 2009 04:54:56 +0000'
Это выводит текущий GMT в указанном формате. Существует также метод localtime()
.
Эта страница имеет более подробную информацию.
Ответ 8
Все предыдущие ответы являются хорошими предложениями, но я считаю, что проще всего использовать ctime()
:
In [2]: from time import ctime
In [3]: ctime()
Out[3]: 'Thu Oct 31 11:40:53 2013'
Это дает красиво отформатированное строковое представление текущего локального времени.
Ответ 9
Если вам нужно текущее время как объект time
:
>>> import datetime
>>> now = datetime.datetime.now()
>>> datetime.time(now.hour, now.minute, now.second)
datetime.time(11, 23, 44)
Ответ 10
Самый быстрый способ:
>>> import time
>>> time.strftime("%Y%m%d")
'20130924'
Ответ 11
почему бы просто не держать вещи просто.
>>> from datetime import datetime
>>> datetime.now().strftime("%Y-%m-%d %H:%M:%S")
'2016-07-27 15:56:59'
>>>
Ответ 12
Просто и легко:
Используя модуль datetime
,
import datetime
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
Выход:
2017-10-17 23:48:55
ИЛИ ЖЕ
Используя time
,
import time
print(time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime()))
Выход:
2017-10-17 18:22:26
Ответ 13
.isoformat()
есть в документации, но еще не здесь (это очень похоже на ответ @Ray Vega):
>>> import datetime
>>> datetime.datetime.now().isoformat()
'2013-06-24T20:35:55.982000'
Ответ 14
Почему бы не спросить U.S. Морская обсерватория, официальный хронометрист ВМС США?
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])
Если вы живете в области D.C. (как и я), латентность может быть не слишком плоха...
Ответ 15
Используя панд, чтобы узнать текущее время, можно решить проблему как можно скорее:
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)
Выход:
2017-09-22 12:44:56.092642
2017-09-22
2017
9
22
12
44
56
92693
Ответ 16
Вот что я закончил:
>>>from time import strftime
>>>strftime("%m/%d/%Y %H:%M")
01/09/2015 13:11
Кроме того, эта таблица является необходимой ссылкой для выбора соответствующих кодов формата для получения даты, отформатированной так, как вы этого хотите (из документации Python "datetime" здесь).
![strftime format code table]()
Ответ 17
если вы уже используете numpy, то можете напрямую использовать функцию numpy.datetime64().
import numpy as np
str(np.datetime64('now'))
только на дату:
str(np.datetime64('today'))
или, если вы уже используете pandas, вы можете использовать функцию pandas.to_datetime()
import pandas as pd
str(pd.to_datetime('now'))
или же,
str(pd.to_datetime('today'))
Ответ 18
Вы можете использовать модуль time
:
import time
print time.strftime("%d/%m/%Y")
>>> 06/02/2015
Использование капитала Y
дает полный год, а использование y
даст 06/02/15
.
Вы также можете использовать следующий код, чтобы увеличить время:
time.strftime("%a, %d %b %Y %H:%M:%S")
>>> 'Fri, 06 Feb 2015 17:45:09'
Ответ 19
import datetime
date_time = datetime.datetime.now()
date = date_time.date() # Gives the date
time = date_time.time() # Gives the time
print date.year, date.month, date.day
print time.hour, time.minute, time.second, time.microsecond
Сделайте dir(date)
или любые переменные, включая пакет. Вы можете получить все атрибуты и методы, связанные с переменной.
Ответ 20
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
Ответ 21
По умолчанию функция now()
возвращает выходные данные в YYYY-MM-DD HH:MM:SS:MS
. Используйте приведенный ниже пример скрипта, чтобы получить текущую дату и время в скрипте Python и распечатать результаты на экране. Создайте файл getDateTime1.py
со следующим содержанием.
import datetime
currentDT = datetime.datetime.now()
print (str(currentDT))
Вывод выглядит так:
2018-03-01 17:03:46.759624
Ответ 22
>>> import datetime, time
>>> time = time.strftime("%H:%M:%S:%MS", time.localtime())
>>> print time
'00:21:38:20S'
Ответ 23
Попробуйте модуль стрелок с http://crsmithdev.com/arrow/:
import arrow
arrow.now()
Или версия UTC:
arrow.utcnow()
Чтобы изменить его вывод, добавьте .format():
arrow.utcnow().format('YYYY-MM-DD HH:mm:ss ZZ')
Для определенного часового пояса:
arrow.now('US/Pacific')
Час назад:
arrow.utcnow().replace(hours=-1)
Или если вы хотите суть.
arrow.get('2013-05-11T21:23:58.970460+00:00').humanize()
>>> '2 years ago'
Ответ 24
Этот вопрос не нуждается в новом ответе только ради этого... блестящая новая игрушка/модуль, однако, является достаточным оправданием. Это библиотека маятника, которая, похоже, выполняет те действия, которые предпринимала стрелка, за исключением тех недостатков, которые присущи стрелке.
Например, ответ на оригинальный вопрос:
>>> import pendulum
>>> print(pendulum.now())
2018-08-14T05:29:28.315802+10:00
>>> print(pendulum.utcnow())
2018-08-13T19:29:35.051023+00:00
Существует множество стандартов, которые необходимо учитывать, включая множественные RFC и ISO, о которых нужно беспокоиться. Когда-нибудь перепутать их; не беспокойтесь, взгляните немного на dir(pendulum.constants)
Там есть немного больше, чем в форматах RFC и ISO.
Когда мы говорим локальный, то что мы имеем в виду? Ну, я имею в виду:
>>> print(pendulum.now().timezone_name)
Australia/Melbourne
>>>
Предположительно, большинство из вас значат где-то еще.
И на это идет. Короче говоря: маятник пытается сделать для даты и времени то, что запросы сделали для HTTP. Это стоит учитывать, в частности, из-за простоты использования и обширной документации.
Ответ 25
Я хочу получить время с миллисекундами. Простой способ получить их:
import time, datetime
print(datetime.datetime.now().time()) # 11:20:08.272239
# Or in a more complicated way
print(datetime.datetime.now().time().isoformat()) # 11:20:08.272239
print(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
Добавьте или удалите нули из последнего умножения, чтобы скорректировать количество десятичных знаков, или просто:
def get_time_str(decimal_points=3):
return time.strftime("%H:%M:%S", time.localtime()) + '.%d' % (time.time() % 1 * 10**decimal_points)
Ответ 26
Если вам просто нужна текущая временная метка в мс (например, для измерения времени выполнения), вы также можете использовать модуль timeit:
import timeit
start_time = timeit.default_timer()
do_stuff_you_want_to_measure()
end_time = timeit.default_timer()
print("Elapsed time: {}".format(end_time - start_time))
Ответ 27
Потому что никто еще не упомянул об этом, и это то, с чем я столкнулся недавно... метод pyutz timezone fromutc() в сочетании с datetime utcnow() - лучший способ найти полезное текущее время (и дату) в любом часовом поясе.
from datetime import datetime
import pytz
JST = pytz.timezone("Asia/Tokyo")
local_time = JST.fromutc(datetime.utcnow())
Если вам нужно только время, вы можете получить его с помощью local_time.time()
.
Ответ 28
Вот то, что я использую, чтобы получить время без необходимости форматировать. Некоторым людям не нравится метод split, но он полезен здесь:
from time import ctime
print ctime().split()[3]
Он будет печататься в формате ЧЧ: ММ: СС.
Ответ 29
import datetime
date_time = str(datetime.datetime.now()).split()
date,time = date_time
дата будет печатать дату, а время будет печатать время.
Ответ 30
Вы можете использовать эту функцию, чтобы получить время (к сожалению, оно не говорит AM или PM):
def gettime():
from datetime import datetime
return ((str(datetime.now())).split(' ')[1]).split('.')[0]
Чтобы объединить часы, минуты, секунды и миллисекунды позже, вы можете использовать следующие функции:
Час:
def gethour():
from datetime import datetime
return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[0]
минута:
def getminute():
from datetime import datetime
return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[1]
Второе:
def getsecond():
from datetime import datetime
return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[2]
миллисекунды:
def getmillisecond():
from datetime import datetime
return (str(datetime.now())).split('.')[1]