Как узнать текущее время в 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" здесь).
Ответ 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]