Питання Як отримати поточний час у Python


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


1955
2018-01-06 04:54


походження




Відповіді:


Використання:

>>> import datetime
>>> datetime.datetime.now()
datetime(2009, 1, 6, 15, 8, 24, 78915)

>>> print(datetime.datetime.now())
2018-07-29 09:17:13.812189

І саме час:

>>> datetime.datetime.time(datetime.datetime.now())
datetime.time(15, 8, 24, 78915)

>>> print(datetime.datetime.time(datetime.datetime.now()))
09:17:51.914526

Той же, але трохи більш компактний:

>>> datetime.datetime.now().time()

Побачити документація для отримання додаткової інформації.

Щоб зберегти набір, ви можете імпортувати datetime об'єкт від datetime модуль:

>>> from datetime import datetime

Потім видаліть ведучий datetime. з усього перерахованого вище.


2009
2018-01-06 04:57



datetime.datetime.now () та datetime.datetime.today () однакові? datetime.datetime.now (tz = None) бере інформацію про часовий пояс, але datetime.datetime.today () не docs.python.org/3.6/library/datetime.html#datetime.datetime.now - Jun
@Jun Ваш коментар, як видається, є відповіддю, але ця відповідь не має нічого спільного з цим today() так що ви впевнені, що це правильний пост для вашого коментаря? - Mike - SMT
@ Mike-SMT Я просто хотів зробити коментар, щоб інші люди не мали озиратися, тому що я не знав різницю на початку - Jun


Ви можете використовувати time.strftime():

>>> from time import gmtime, strftime
>>> strftime("%Y-%m-%d %H:%M:%S", gmtime())
'2009-01-05 22:14:39'

787
2018-01-06 04:59



Чи краще / гірше, ніж відповідь @ ParaMeterz нижче? Чому ми повинні використовувати time модуль проти datetime модуль - frank


Схожий на Відповідь Харлі, але використовуйте str() функція для швидкого n-брудного, трохи більш людського читабельного формату:

>>> from datetime import datetime
>>> str(datetime.now())
'2011-05-03 17:45:35.177000'

408
2018-05-04 00:56



Все, що потрібно, це отримати поточний час, а не показувати його. - ppperry
чому псевдонім модуля datetime має значення? тобто, чому ні import datetime робота - Mike Palmice
@ MikePalmice Це працює, але вам потрібно буде написати datetime.datetime.now(). - Gabriel


>>> from datetime import datetime
>>> datetime.now().strftime('%Y-%m-%d %H:%M:%S')

Для цього прикладу вихід буде таким: '2013-09-18 11:16:32'

Ось список strftime.


368
2018-01-09 05:50





Як отримати поточний час у Python?

The time модуль

The time модуль надає функції, які дають нам час у "секундах з епохи", а також інших утиліт.

import time

Час Unix Epoch

Це формат, в якому слід зберігати тимчасові мітки для збереження в базах даних. Це просто число з плаваючою комою, яке можна перетворити на ціле число. Це також корисно для арифметики за лічені секунди, оскільки воно відображає кількість секунд з 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 модуль

The datetime Модуль також корисний тут:

>>> import datetime

datetime.datetime.now

The 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's 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 часовий пояс 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>)

The pytz модуль дозволяє нам зробити наш datetime об'єкти визначають часовий пояс і перетворюють час у сотні часових поясів, доступних у pytz модуль

Можна нібито серіалізувати цей об'єкт на UTC часу і зберігати це в базі даних, але це вимагатиме значно більшої пам'яті і буде більш схильним до помилки, ніж просто зберігати час Еніону Unix, який я показав спочатку.

Інший спосіб перегляду часу значно більше схильний до помилок, особливо коли стосується даних, які можуть надходити з різних часових поясів. Ви хочете, щоб тут не було плутанини щодо того, який часовий пояс був призначений для ряду або серійного об'єкта datetime.

Якщо ви показуєте час для користувача Python, ctime працює чудово, не в таблиці (це зазвичай не сортує), але, можливо, в години. Тим не менше, я особисто рекомендую при роботі з часом в Python, використовуючи час Unix, або часовий пояс, що відрізняється від UTC datetime об'єкт


207
2018-02-18 05:08





Зробіть

from time import time

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

Існує певна відмінність для платформ Unix і Windows.


113
2018-01-06 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 ().

Це сторінка має більше деталей.


83
2018-01-06 05:02





Усі хороші пропозиції, але я вважаю, що це найпростіше використовувати ctime() себе:

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

Це дає чудово відформатоване строкове подання поточного місцевого часу.


45
2017-10-31 15:39





Якщо вам потрібен поточний час як time об'єкт:

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

35
2017-12-27 10:24





Найшвидший спосіб - це

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

32
2017-09-24 11:21