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

3341

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

3
  • 37
    обратите внимание, что большинство проголосовавших за ответы на timezonoe-naive datetime, в то время как мы видим, что в производственной среде все больше и больше сервисов по всему миру соединяются вместе, и datetime с учетом часового пояса становится обязательным стандартом. 29 апр '20 в 17:12
  • 1
    также для django см. здесь , чтобы узнать о часовом поясе
    Anupam
    19 сен '20 в 6:42
  • 2
    Это очень актуальный момент от @ SławomirLenart, и вот краткое руководство, показывающее несколько способов получить текущее время на основе часового пояса. 14 августа в 14:26
3464

Использовать:

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

7
  • 44 год
    Было бы неплохо, если бы этот ответ охватывал часовые пояса (например, UTC) и, возможно, начинался с time.time (). 01 окт.
  • 10
    @Toskan формат не был частью вопроса, поэтому он не должен быть частью ответа. Уже есть ссылка на дополнительную документацию по модулю, которая содержит такие вещи, как форматирование. 18 окт.
  • В какой версии Python был дан исходный ответ? Просто набрав datetime.datetime.now()в моей интерактивной консоли Python 2.7 (IronPython еще не обновлен), я получаю то же поведение, что и новый пример, использованный print()в ответе. Я не смог успешно воспроизвести то, что показывает исходный ответ (datetime.datetime (2009, 1, 6, 15, 8, 24, 78915)). (Не то чтобы я действительно этого хотел, поведение print () предпочтительнее, но мне любопытно.) 29 окт.
  • @BobVicktor: Python 2.7, 3.7 и 3.8 дают мне одно и то же поведение, я не уверен, что вы видите. 31 окт.
  • @HarleyHolcombe Хм ... может, дело в IronPython? Когда я печатаю сам datetime.now()по себе, он распечатывает то же самое, что и ваш ответ print(datetime.now())... 1 ноя '19 в 5:58
1061

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

>>> from time import gmtime, strftime
>>> strftime("%Y-%m-%d %H:%M:%S", gmtime())
'2009-01-05 22:14:39'
6
  • 55
    Это лучше / хуже, чем ответ @ ParaMeterz ниже? Почему мы должны использовать timeмодуль вместо datetimeмодуля?
    Nathan
    29 апр '18 в 16:17
  • 4
    Он не возвращает текущий час моего компьютера.
    Saeed
    29 окт.
  • 11
    Это время UTC, отличное от модуля datetime
    Voyager
    12 марта '19 в 8: 112019-03-12 11:11
  • 24
    @Saeed: Используйте функцию localtime()вместо, gmtime()чтобы узнать ваше местное время. 03 июл.
  • 4
    @frank См родственный вопрос о datetimeVS. time. 30 сен '19 в 4:32
722
from datetime import datetime
datetime.now().strftime('%Y-%m-%d %H:%M:%S')

В этом примере результат будет таким: '2013-09-18 11:16:32'

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

0
486

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

>>> from datetime import datetime
>>> str(datetime.now())
'2011-05-03 17:45:35.177000'
6
  • 3
    Не имеет значения; шаг "str" ​​выходит за рамки вопроса
    pppery
    11 апр '19 в 21:06
  • 10
    @pppery Оператор также не говорит, что речь идет не о том, чтобы получить строку времени. Оператор вообще не говорит, что они хотят делать со временем, так почему же плохо показывать, как преобразовать его в строку? В большинстве ответов говорится о получении строки из времени, поэтому, похоже, это общий вариант использования, так зачем выделять ответ Рэя? Какой смысл просто получать время, не зная, как с ним что- то делать ? Вы можете распечатать его или вычислить, и только пара ответов показывает, как делать с ним математику, поэтому я думаю, что распечатка / получение строки - это обычное использование. ;-) (Я знаю, что это то, за чем я пришел.) 29 окт.
  • 6
    Тот факт, что у этого ответа более 440 голосов, говорит о том, что незначительное добавление строкового метода было полезно многим людям.
    John
    10 янв.
  • 3
    Тот факт, что 440 человек искали контент, который не является фактическим ответом на вопрос, не делает этот контент ответом на вопрос.
    pppery
    21 фев '20 в 4:55
  • 1
    @pppery Тот факт, что это еще один способ ответа на вопрос, делает его ВАЖНЫМ для других людей, у которых есть вопрос, аналогичный этому вопросу. Так что ничего плохого в этом нет :) 31 дек.
435

How do I get the current time in 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без информации о часовом поясе (если не указан, в противном случае см. Информацию о часовом поясе ниже). У него есть представление (которое позволит вам воссоздать эквивалентный объект), отображаемое в оболочке, но при печати (или приведении к a 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

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

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

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

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

2
  • Я думаю, каждый может согласиться с тем, что ctimeэто должен быть самый странный способ форматирования даты и времени. Сокращенный день недели и месяца, день месяца, 24 часа ч: м: с, а затем четырехзначный год. Ботаны, которые любят сортировать строки дат, американцы, европейцы ... каждый - да, каждый - может найти как минимум две вещи, которые могут раздражать в этом формате. Хотя я воспользуюсь им, потому что это супер просто. 6 сен '20 в 3:32
  • Как я сказал выше относительно ctime: «Вы также можете представлять текущее время способом, который предпочитает ваша операционная система (что означает, что оно может измениться, когда вы изменяете системные настройки, поэтому не полагайтесь на то, что это будет стандартным для всех систем, поскольку Я видел, как другие ожидают). Обычно это удобно для пользователя, но обычно не приводит к строкам, которые можно отсортировать в хронологическом порядке: " 6 сен '20 в 5:16
142

Делать

from time import time

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

Есть некоторая разница для платформ Unix и Windows.

1
  • Мой результат для дома с Windows 10 был 1576095264.2682993 - для Windows это может дать время в секундах.
    hooman
    11 дек '19 в 20:16
110
>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %X +0000", gmtime())
'Tue, 06 Jan 2009 04:54:56 +0000'

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

На этой странице есть более подробная информация.

0
76

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

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

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

1
  • OP спросил, как узнать время, а не как его отобразить! 25 мая '20 в 17:35
69

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

>>> import time
>>> time.strftime("%Y%m%d")
'20130924'
58

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

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

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

>>> import datetime
>>> datetime.datetime.now().isoformat()
'2013-06-24T20:35:55.982000'
0
40

Почему бы не спросить у Военно-морской обсерватории США , официального хронометриста ВМС США?

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])

Если вы живете в районе Вашингтона (как я), задержка может быть не такой уж большой ...

2
  • 21 год
    @ C8H10N4O2 Хотя вы правы, что в других ответах предполагается, что ваш компьютер уже знает точное время, этот ответ предполагает, что компьютер подключен к Интернету, что вы находитесь в США, и что они никогда не удалят этот файл / переделать ссылку. В этом ответе гораздо больше предположений, чем принято. Тем не менее умный 28 окт.
  • Замечательно иметь другой источник времени, чем встроенные часы! Даже неплохая альтернатива более логичному выбору NTP.
    Roland
    27 апр в 9:42
37

Вы можете использовать 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'
0
36

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

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
1
  • Этот метод будет устаревшим в будущих версиях pandas. Вместо этого используйте модуль datetime.
    bfree67
    29 сен.
29

Вот что я в итоге сделал:

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

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

Таблица кодов формата strftime

3
  • 2
    strftime(time_format)возвращает текущее местное время в виде строки, соответствующей заданному time_format. Примечание: time.strftime()и datetime.strftime()поддерживают различные директивы ЭГ-, %zне поддерживается time.strftime()на Python 2 .
    jfs
    09 янв.
  • 1
    Лучше ли использовать datetime вместо time? 15 янв.
  • 2
    Многие timeфункции модуля представляют собой тонкую оболочку соответствующих функций C. datetimeявляется более высоким уровнем и обычно более портативным.
    jfs
    15 янв.
29

если вы уже используете 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'))
0
25

datetime.now()возвращает текущее время как простой объект datetime, представляющий время в местном часовом поясе. Это значение может быть неоднозначным, например, во время перехода на летнее время («возврат»). Чтобы избежать двусмысленности, следует использовать часовой пояс 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
3
  • К вашему сведению, не рекомендуется использовать datetime.utcnow()для представления текущего времени в формате UTC, поскольку он по-прежнему возвращает «наивный» объект datetime - вместо этого рекомендуется использовать, datetime.now(timezone.utc)поскольку он возвращает «осведомленный» объект datetime. Дополнительную информацию см. В документации Python: docs.python.org/3/library/…
    Seth
    14 июня в 18:35
  • @Seth замечает, что решение Python 3.2+ timezone.utcуже использует . Возможно, теперь, когда Python 2.7 закрыт EOL, naive-datetime может быть удалено
    jfs
    15 июня в 18:42
  • Ах, я не понимал, что это было сделано исключительно для совместимости с Python 2.7 - возможно, это следует уточнить в посте? По крайней мере, мне казалось, что этот пост подразумевал, что как наивные, так и осведомленные методы были (все еще) одинаково приемлемыми способами получения времени в формате UTC, поэтому я указал, что это не то, что говорится в (последней) документации Python.
    Seth
    18 июня в 17:45
22
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

Do dir(date)или любые переменные, включая package. Вы можете получить все атрибуты и методы, связанные с переменной.

1
  • @snofty и @ user1016274, если import datetimeто datetime.datetime.now()\ n, если from datetime import datetimeтоdatetime.now() 21 апр.
19
>>> import datetime, time
>>> time = time.strftime("%H:%M:%S:%MS", time.localtime())
>>> print time
'00:21:38:20S'
3
  • Я думаю, вы хотите сказать "datetime.now (). Strftime (...)"
    hlin117
    26 окт.
  • да, это можно сделать, как вы сказали. "datetime.datetime.now (). strftime ("% H:% M:% S:% MS ")" 4 ноя '14 в 10:02
  • 4
    % MS не дает вам миллисекунд !!
    ZF007
    13 июн.
19

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

Например, ответ на исходный вопрос:

>>> 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
>>>

По-видимому, большинство из вас имеет в виду другое место.

И это продолжается. Короче говоря: Pendulum пытается сделать для даты и времени то же, что и запросы для HTTP. Это заслуживает внимания, особенно из-за простоты использования и обширной документации.

18

По умолчанию 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
16

Попробуйте модуль стрелки из 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'
1
16

Текущее время часового пояса

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"))

#list timezones
pytz.all_timezones
14

Если вам просто нужна текущая отметка времени в мс (например, для измерения времени выполнения), вы также можете использовать модуль 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))
14

Вы можете использовать эту функцию, чтобы узнать время (к сожалению, здесь не указано 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]
14

Вы можете попробовать следующее

import datetime

now = datetime.datetime.now()
print(now)

или

import datetime

now = datetime.datetime.now()
print(now.strftime("%Y-%b-%d, %A %I:%M:%S"))
14

Чтобы получить ровно 3 десятичных знака для миллисекунд, 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 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)
1
  • 1
    Это работает в Python 3: time.strftime ("% H:% M:% S", time.localtime ()) + '. {}'. Format (int (time.time ()% 1 * 1000)) 27 сен.
12

Поскольку никто еще не упомянул об этом, и это то, с чем я недавно столкнулся ... метод fromutc () pytz timezone в сочетании с utcnow () datetime - лучший способ, который я нашел, чтобы получить полезное текущее время (и дату) в любом часовом поясе.

from datetime import datetime

import pytz


JST = pytz.timezone("Asia/Tokyo")


local_time = JST.fromutc(datetime.utcnow())

Если все, что вам нужно, это время, вы можете получить его local_time.time().

2
  • Удивительно, но во всех приведенных выше ответах часовые пояса не упоминались. вы также должны включить strftime, чтобы получить желаемый формат. 30 авг.
  • 1
    Я не включил это, поскольку он уже был рассмотрен в других ответах (и форматирование отображения не входило в вопрос).
    kungphu
    31 авг.
12
import datetime

todays_date = datetime.date.today()
print(todays_date)
>>> 2019-10-12

# adding strftime will remove the seconds
current_time = datetime.datetime.now().strftime('%H:%M')
print(current_time)
>>> 23:38
11

Вы можете сделать это с помощью ctime ():

from time import time, ctime
t = time()
ctime(t)

выход:

Sat Sep 14 21:27:08 2019

Эти выходные данные различаются, потому что метка времени, которую возвращает, ctime()зависит от вашего географического положения.