Какой модуль / метод используется для получения текущего времени?
30 ответов
Использование:
>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2009, 1, 6, 15, 8, 24, 78915)
>>> print(datetime.datetime.now())
2009-01-06 15:08:24.789150
И просто время:
>>> datetime.datetime.now().time()
datetime.time(15, 8, 24, 78915)
>>> print(datetime.datetime.now().time())
15:08:24.789150
См. документацию для получения дополнительной информации.
Чтобы сохранить набор текста, вы можете импортировать объект datetime
из модуля datetime
:
>>> from datetime import datetime
Затем удалите ведущий datetime.
из всего вышеперечисленного.
По умолчанию функция 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
Этот вопрос не нуждается в новом ответе только ради этого ... блестящая новая игрушка / модуль, однако, является достаточным оправданием. Это библиотека маятника, которая, похоже, выполняет те действия, которые предпринимала стрелка, кроме как без Присущие недостатки и ошибки, которые окружают стрелку.
Например, ответ на оригинальный вопрос:
>>> import pendulum
>>> print(pendulum.now())
2018-08-14T05:29:28.315802+10:00
>>> print(pendulum.now('utc'))
2018-08-13T19:29:35.051023+00:00
Существует множество стандартов, которые необходимо учитывать, в том числе несколько RFC и ISO. Когда-нибудь перепутать их; не беспокойтесь, взгляните немного на dir(pendulum.constants)
. Там есть нечто большее, чем форматы RFC и ISO.
Когда мы говорим местный, что мы имеем в виду? Ну, я имею в виду:
>>> print(pendulum.now().timezone_name)
Australia/Melbourne
>>>
Предположительно, большинство из вас значат где-то еще.
И на это идет. Короче говоря: маятник пытается сделать для даты и времени то, что запросы сделали для HTTP. Это стоит учитывать, особенно из-за простоты использования и обширной документации.
Потому что никто еще не упомянул об этом, и это то, с чем я столкнулся недавно ... метод pyutz timezone from) () в сочетании с utcnow () datetime - лучший способ найти полезное текущее время (и дату) в любом часовом поясе.
from datetime import datetime
import pytz
JST = pytz.timezone("Asia/Tokyo")
local_time = JST.fromutc(datetime.utcnow())
Если вам нужно только время, вы можете получить его с помощью local_time.time()
.
Попробуйте модуль со стрелкой на странице 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'
Вот то, что я использую, чтобы получить время без необходимости форматировать. Некоторым людям не нравится метод split, но он полезен здесь:
from time import ctime
print ctime().split()[3]
Он будет печататься в формате ЧЧ: ММ: СС.
Как узнать текущее время в 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
без информации о часовом поясе (если не указан, в противном случае смотрите информацию о часовом поясе ниже). У него есть представление (которое позволит вам воссоздать эквивалентный объект), отображаемое в оболочке, но при печати (или приведение к 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, которые мы создали до сих пор, не может быть легко преобразован в различные часовые пояса. Мы можем решить эту проблему с помощью модуля 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, которое я продемонстрировал первым.
Другие способы просмотра времени гораздо более подвержены ошибкам, особенно при работе с данными, которые могут поступать из разных часовых поясов. Вы хотите, чтобы не было путаницы относительно того, для какого часового пояса была предназначена строка или сериализованный объект datetime.
Если вы отображаете время с Python для пользователя, ctime
работает хорошо, не в таблице (обычно она плохо сортируется), а, возможно, в часах. Однако я лично рекомендую при работе со временем в Python использовать либо время Unix, либо объект UTC datetime
с учетом часового пояса.
import datetime
date_time = str(datetime.datetime.now()).split()
date,time = date_time
дата напечатает дату, а время напечатает время.
Вы можете использовать time.strftime()
:
>>> from time import gmtime, strftime
>>> strftime("%Y-%m-%d %H:%M:%S", gmtime())
'2009-01-05 22:14:39'
.isoformat()
есть в документации, но еще не здесь (это очень похоже на ответ @Ray Vega):
>>> import datetime
>>> datetime.datetime.now().isoformat()
'2013-06-24T20:35:55.982000'
Вы можете использовать модуль 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'
Делать
from time import time
t = time()
t
- число с плавающей точкой, подходит для измерения временного интервала.
Существует некоторая разница для платформ Unix и Windows.
Этот вопрос относится к Python, но поскольку Django является одной из наиболее широко используемых сред Python, важно отметить, что если вы используете Django, вы всегда можете использовать timezone.now()
вместо datetime.datetime.now()
. Первый - это часовой пояс, а второй - нет.
См. этот ответ SO и Django doc для подробностей и обоснования timezone.now()
.
from django.utils import timezone
now = timezone.now()
Все предыдущие ответы являются хорошими предложениями, но я считаю, что проще всего использовать ctime()
:
In [2]: from time import ctime
In [3]: ctime()
Out[3]: 'Thu Oct 31 11:40:53 2013'
Это дает красиво отформатированное строковое представление текущего местного времени.
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)
или любые переменные, включая пакет. Вы можете получить все атрибуты и методы, связанные с переменной.
Похоже на ответ Харли, но используйте {{ X0}} функция для быстрого, немного грязного, чуть более удобочитаемого формата:
>>> from datetime import datetime
>>> str(datetime.now())
'2011-05-03 17:45:35.177000'
Я хочу получить время с миллисекундами. Простой способ получить их:
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)
Почему бы не спросить США? Военно-морская обсерватория, официальный хронометрист ВМС США?
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])
Если вы живете в округе Колумбия (как и я), задержка может быть не такой уж плохой ...
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
Текущее время часового пояса
from datetime import datetime
import pytz
tz_NY = pytz.timezone('America/New_York')
datetime_NY = datetime.now(tz_NY)
print("NY time:", datetime_NY.strftime("%H:%M:%S"))
tz_London = pytz.timezone('Europe/London')
datetime_London = datetime.now(tz_London)
print("London time:", datetime_London.strftime("%H:%M:%S"))
tz_India = pytz.timezone('Asia/India')
datetime_India = datetime.now(tz_India)
print("India time:", datetime_India.strftime("%H:%M:%S"))
Вы можете использовать эту функцию, чтобы получить время (к сожалению, оно не говорит AM или PM):
def gettime():
from datetime import datetime
return ((str(datetime.now())).split(' ')[1]).split('.')[0]
Чтобы объединить часы, минуты, секунды и миллисекунды позже, вы можете использовать эти функции:
< EM> Час:
def gethour():
from datetime import datetime
return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[0]
< EM> Минута:
def getminute():
from datetime import datetime
return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[1]
< EM> Во-вторых :
def getsecond():
from datetime import datetime
return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[2]
< EM> миллисекунды :
def getmillisecond():
from datetime import datetime
return (str(datetime.now())).split('.')[1]
Если вы уже используете 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'))
Это то, что я закончил с:
>>>from time import strftime
>>>strftime("%m/%d/%Y %H:%M")
01/09/2015 13:11
Кроме того, эта таблица является необходимой ссылкой для выбора соответствующих кодов формата, чтобы получить дату, отформатированную так, как вы этого хотите (из документации Python «datetime» здесь).
Используя панды, чтобы узнать текущее время, что-то вроде решения проблемы:
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
from datetime import datetime
datetime.now().strftime('%Y-%m-%d %H:%M:%S')
Для этого примера выходные данные будут такими: '2013-09-18 11:16:32'
Вот список strftime
директив а> .
>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %X +0000", gmtime())
'Tue, 06 Jan 2009 04:54:56 +0000'
Это выводит текущее время по Гринвичу в указанном формате. Существует также localtime()
метод.
На этой странице есть более подробная информация.
Если вам нужна текущая временная метка в мс (например, для измерения времени выполнения), вы также можете использовать модуль 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))
>>> import datetime, time
>>> time = time.strftime("%H:%M:%S:%MS", time.localtime())
>>> print time
'00:21:38:20S'
Самый быстрый способ это:
>>> import time
>>> time.strftime("%Y%m%d")
'20130924'
Если вам нужно текущее время как объект time
:
>>> import datetime
>>> now = datetime.datetime.now()
>>> datetime.time(now.hour, now.minute, now.second)
datetime.time(11, 23, 44)
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.