Как узнать текущее время в Python

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

+2462
06 янв. '09 в 4:54
источник поделиться
30 ответов
  • 1
  • 2

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

>>> 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. из всего вышеперечисленного.

+2599
06 янв. '09 в 4:57
источник

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

>>> from time import gmtime, strftime
>>> strftime("%Y-%m-%d %H:%M:%S", gmtime())
'2009-01-05 22:14:39'
+876
06 янв. '09 в 4:59
источник
from datetime import datetime
datetime.now().strftime('%Y-%m-%d %H:%M:%S')

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

Вот список директив strftime.

+495
09 янв. '13 в 5:50
источник

Как и Harley answer, но используйте функцию str() для быстрого n-грязного, немного более удобного для чтения формата:

>>> from datetime import datetime
>>> str(datetime.now())
'2011-05-03 17:45:35.177000'
+438
04 мая '11 в 0:56
источник

Как получить текущее время в 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 с часовым поясом.

+304
18 февр. '15 в 5:08
источник

Do

from time import time

t = time()
  • t - число с плавающей точкой, хорошее для измерения временных интервалов.

Существует некоторая разница для платформ Unix и Windows.

+122
06 янв. '09 в 13:55
источник
>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %X +0000", gmtime())
'Tue, 06 Jan 2009 04:54:56 +0000'

Это выводит текущий GMT в указанном формате. Существует также метод localtime().

Эта страница имеет более подробную информацию.

+92
06 янв. '09 в 5:02
источник

Все хорошие предложения, но мне легче всего использовать ctime():

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

Это дает хорошо отформатированное строковое представление текущего локального времени.

+55
31 окт. '13 в 15:39
источник

почему бы просто не держать вещи просто.

>>> from datetime import datetime
>>> datetime.now().strftime("%Y-%m-%d %H:%M:%S")
'2016-07-27 15:56:59'
>>>
+44
27 июл. '16 в 13:58
источник

Если вам нужно текущее время как объект time:

>>> import datetime
>>> now = datetime.datetime.now()
>>> datetime.time(now.hour, now.minute, now.second)
datetime.time(11, 23, 44)
+43
27 дек. '10 в 10:24
источник

Просто и легко:

Используя модуль 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
+41
17 окт. '17 в 18:24
источник

Самый быстрый способ -

>>> import time
>>> time.strftime("%Y%m%d")
'20130924'
+40
24 сент. '13 в 11:21
источник

.isoformat() есть в документации, но еще не здесь (это очень похоже на ответ @Ray Vega):

>>> import datetime
>>> datetime.datetime.now().isoformat()
'2013-06-24T20:35:55.982000'
+32
25 июн. '13 в 0:38
источник

Почему бы не спросить 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. (как и я), латентность может быть не слишком плоха...

+30
19 авг. '16 в 19:45
источник

Используя панд, чтобы узнать текущее время, можно решить проблему:

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
+23
22 сент. '17 в 12:45
источник

Вот что я закончил:

>>>from time import strftime
>>>strftime("%m/%d/%Y %H:%M")
01/09/2015 13:11

Кроме того, эта таблица является необходимой ссылкой для выбора соответствующих кодов формата для получения даты, отформатированной так, как вы этого хотите (из документации Python "datetime" здесь).

strftime format code table

+20
09 янв. '15 в 18:24
источник
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) или любые переменные, включая пакет. Вы можете получить все атрибуты и методы, связанные с переменной.

+16
09 апр. '17 в 4: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'))
+15
07 нояб. '17 в 6:17
источник

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
+14
22 дек. '14 в 22:52
источник

Вы можете использовать модуль 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'
+14
06 февр. '15 в 17:46
источник

По умолчанию функция 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
+12
01 мар. '18 в 11:34
источник

Попробуйте модуль стрелок с 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'
+12
14 нояб. '15 в 2:02
источник

Я хочу получить время с миллисекундами. Простой способ получить их:

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)
+11
18 июл. '16 в 9:45
источник

Этот вопрос не нуждается в новом ответе только ради этого... блестящая новая игрушка/модуль, однако, является достаточным оправданием. Это библиотека маятника, которая, похоже, выполняет те действия, которые предпринимала стрелка, за исключением тех недостатков, которые присущи стрелке.

Например, ответ на оригинальный вопрос:

>>> 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. Это стоит учитывать, в частности, из-за простоты использования и обширной документации.

+11
13 авг. '18 в 20:08
источник
>>> import datetime, time
>>> time = strftime("%H:%M:%S:%MS", time.localtime())
>>> print time
'00:20:58:20S'
+11
20 мая '14 в 7:13
источник

Если вам просто нужна текущая временная метка в мс (например, для измерения времени выполнения), вы также можете использовать модуль 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))
+9
18 июл. '18 в 7:11
источник

Потому что никто еще не упомянул об этом, и это то, с чем я столкнулся недавно... метод 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().

+7
06 июл. '18 в 8:24
источник

Вот то, что я использую, чтобы получить время без необходимости форматировать. Некоторым людям не нравится метод split, но он полезен здесь:

from time import ctime
print ctime().split()[3]

Он будет печататься в формате ЧЧ: ММ: СС.

+6
01 мая '15 в 1:39
источник
import datetime
date_time = str(datetime.datetime.now()).split()
date,time = date_time

дата будет печатать дату, а время будет печатать время.

+6
14 июл. '16 в 5:50
источник

Вы можете использовать эту функцию, чтобы получить время (к сожалению, оно не говорит AM или PM):

def gettime():
        from datetime import datetime
        return ((str(datetime.now())).split(' ')[1]).split('.')[0]

Чтобы объединить часы, минуты, секунды и миллисекунды позже, вы можете использовать эти функции:

Час:

def gethour():
        from datetime import datetime
        return 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 return (str(datetime.now())).split('.')[1]
+6
29 нояб. '17 в 8:22
источник
  • 1
  • 2

Посмотрите другие вопросы по меткам или Задайте вопрос