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

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

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

Sławomir Lenart 29.04.2020 20:12

также для django см. здесь, чтобы узнать о часовом поясе

Anupam 19.09.2020 09:42
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3 197
2
3 562 569
43
Перейти к ответу Данный вопрос помечен как решенный

Ответы 43

Ответ принят как подходящий

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

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

Было бы неплохо, если бы этот ответ охватывал часовые пояса (например, UTC) и, возможно, начинался с time.time ().

Greg Lindahl 02.10.2018 00:41

@Toskan формат не был частью вопроса, поэтому он не должен быть частью ответа. Уже есть ссылка на дополнительную документацию по модулю, которая содержит такие вещи, как форматирование.

JiyuuSensei 18.10.2019 10:04

В какой версии Python был дан исходный ответ? Просто набрав datetime.datetime.now() в моей интерактивной консоли Python 2.7 (IronPython еще не обновлен), я получаю то же поведение, что и более новый пример с использованием print() в ответе. Я не смог успешно воспроизвести то, что показывает исходный ответ (datetime.datetime (2009, 1, 6, 15, 8, 24, 78915)). (Не то чтобы я действительно этого хотел, поведение print () предпочтительнее, но мне любопытно.)

RTHarston 29.10.2019 18:04

@BobVicktor: Python 2.7, 3.7 и 3.8 дают мне одно и то же поведение, я не уверен, что вы видите.

Harley Holcombe 31.10.2019 23:15

@HarleyHolcombe Хм ... может, дело в IronPython? Когда я набираю datetime.now() самостоятельно, он распечатывает то же самое, что и ваш ответ, print(datetime.now()) ...

RTHarston 01.11.2019 08:58

Рассмотрим import datetime as dt, если вы хотите использовать другие модули datetime, такие как datetime.time.

Chiel 22.03.2021 18:10

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

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

Это лучше / хуже, чем ответ @ ParaMeterz ниже? Почему мы должны использовать модуль time вместо модуля datetime?

Nathan 29.04.2018 19:17

Он не возвращает текущий час моего компьютера.

Saeed 29.10.2018 14:51

@Saeed это из-за часового пояса?

Nicholas Humphrey 20.12.2018 17:05

Это время UTC, отличное от модуля datetime

Voyager 12.03.2019 11:11

@Saeed: Используйте функцию localtime() вместо gmtime(), чтобы узнать ваше местное время.

Jeyekomon 03.07.2019 14:33

@frank См. связанный вопрос на datetime vs. time.

Packard CPW 30.09.2019 07:32
>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %X +0000", gmtime())
'Tue, 06 Jan 2009 04:54:56 +0000'

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

Этот страница содержит больше деталей.

Делать

from time import time

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

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

Мой результат для дома с Windows 10 был 1576095264.2682993 - для Windows это может дать время в секундах.

Reinstate C0MMUNiSM 11.12.2019 23:16

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

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

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

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

Все, что он просит, - это получить текущее время, а не отображать его.

pppery 23.08.2017 16:50

@ppperry, тогда просто назначьте переменную для ответа Рэя, например: myTime = str (datetime.now ()).

Lukas 27.03.2019 08:30

Не имеет значения; шаг "str" ​​выходит за рамки вопроса

pppery 12.04.2019 00:06

@pppery Оператор также не говорит, что речь идет не о том, чтобы получить строку времени. Оператор вообще не говорит, что они хотят делать со временем, так почему же плохо показывать, как преобразовать его в строку? В большинстве ответов говорится о получении строки из времени, поэтому, похоже, это общий вариант использования, так зачем выделять ответ Рэя? Какой смысл просто получать время, не зная, как с ним что-нибудь сделать делать? Вы можете распечатать его или вычислить, и только пара ответов показывает, как делать с ним математику, поэтому я думаю, что распечатка / получение строки - это обычное использование. ;-) (Я знаю, что это то, за чем я пришел.)

RTHarston 29.10.2019 18:21

Тот факт, что у этого ответа более 440 голосов, говорит о том, что незначительное добавление строкового метода было полезно многим людям.

John 10.01.2020 23:09

Тот факт, что 440 человек искали контент, который не является фактическим ответом на вопрос, не делает этот контент ответом на вопрос.

pppery 21.02.2020 07:55

@pppery Тот факт, что это еще один способ ответить на вопрос, делает его ВАЖНЫМ для других людей, у которых есть вопрос, похожий на этот вопрос. Так что ничего плохого в этом нет :)

Ice Bear 31.12.2020 18:20
from datetime import datetime
datetime.now().strftime('%Y-%m-%d %H:%M:%S')

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

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

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

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

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

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

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

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

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

OP спросил, как получать время, а не как его отображать!

TheTechRobo36414519 25.05.2020 20:35
>>> import datetime, time
>>> time = time.strftime("%H:%M:%S:%MS", time.localtime())
>>> print time
'00:21:38:20S'

Я думаю, вы хотите сказать "datetime.now (). Strftime (...)"

hlin117 26.10.2014 23:46

да, это можно сделать, как вы сказали. "datetime.datetime.now (). strftime ("% H:% M:% S:% MS ")"

user2030113 04.11.2014 13:02

% MS не дает вам миллисекунд !!

ZF007 13.06.2019 23:23

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

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

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

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

strftime format code table

strftime(time_format) возвращает текущее местное время в виде строки, соответствующей данному time_format. Примечание: time.strftime() и datetime.strftime() поддерживают разные наборы директив, например, %z не поддерживается time.strftime() на Python 2.
jfs 10.01.2015 02:36

Лучше ли использовать datetime вместо time?

Kristen G. 15.01.2015 23:09

Многие функции модуля time представляют собой тонкую оболочку соответствующих функций C. datetime - это более высокий уровень, и он обычно более портативен.

jfs 15.01.2015 23:19

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

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

Вы можете получить объект 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>)

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

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

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

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

Я думаю, что все согласятся, что ctime должен быть самым странным способом форматирования даты и времени. Сокращенный день недели и месяца, день месяца, 24 часа ч: м: с, а затем четырехзначный год. Ботаны, которые любят сортировать строки дат, американцы, европейцы ... каждый - да, каждый - может найти как минимум две вещи, которые могут раздражать в этом формате. Хотя я воспользуюсь им, потому что это супер просто.

ArtOfWarfare 06.09.2020 06:32

Как я сказал выше относительно ctime: «Вы также можете представлять текущее время так, как это предпочитает ваша операционная система (что означает, что оно может измениться, когда вы изменяете свои системные настройки, поэтому не полагайтесь на то, что это будет стандартным для всех систем, как я видел, как ожидают другие). Обычно это удобно для пользователя, но обычно не приводит к строкам, которые можно отсортировать в хронологическом порядке: "

Aaron Hall 06.09.2020 08:16

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

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

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

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

помните, что arrow.now('Time/Zone') может выйти из строя для некоторых часовых поясов (arrow использует dateutil, который сломал utc -> локальные преобразования, которые используются внутри arrow.now(). Примечание: pytz не имеет такой проблемы. Также, есть другие проблемы, связанные с часовым поясом

jfs 14.11.2015 12:00
import datetime
date_time = str(datetime.datetime.now()).split()
date,time = date_time

Дата напечатает дату, а время напечатает время.

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

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)

Это работает в Python 3: time.strftime ("% H:% M:% S", time.localtime ()) + '. {}'. Format (int (time.time ()% 1 * 1000))

Greg Graham 27.09.2016 17:41

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

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

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

@ C8H10N4O2 Хотя вы правы, что другие ответы предполагают, что ваш компьютер уже знает правильное время, этот ответ предполагает, что компьютер подключен к Интернету, что вы находитесь в США, и что они никогда не удалят этот файл / переделать ссылку. В этом ответе гораздо больше предположений, чем принято. Тем не менее умный

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

@snofty и @ user1016274, если import datetime, то это datetime.datetime.now() \ n, если from datetime import datetime, то это datetime.now()

theBuzzyCoder 21.04.2017 07:44

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

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

Этот метод будет устаревшим в будущих версиях pandas. Вместо этого используйте модуль datetime.

bfree67 29.09.2020 06:12

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

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

// Day {Mon,Tue,..}
print ctime().split()[0]
// Month {Jan, Feb,..}
print ctime().split()[1]
// Date {1,2,..}
print ctime().split()[2]
// HH:MM:SS
print ctime().split()[3]
// Year {2018,..}
print ctime().split()[4]

Когда вы вызываете ctime(), он преобразует секунды в строку в формате 'Day Month Date HH:MM:SS Year' (например: 'Wed January 17 16:53:22 2018'), затем вы вызываете метод split(), который будет составлять список из вашей строки ['Wed','Jan','17','16:56:45','2018'] (разделитель по умолчанию - пробел).

Скобки используются для «выбора» желаемого аргумента в списке.

Следует вызвать всего одну строку кода. Не следует называть их, как я, это был просто пример, потому что в некоторых случаях вы получите разные значения, редкие, но не невозможные случаи.

Вы также можете объяснить, почему извлечение таких частей из нескольких вызовов ctime() (с использованием «текущего» времени при каждом вызове) не обязательно дает полезное значение в сочетании друг с другом.

Toby Speight 16.01.2018 19:09

Что здесь делает //?

gerrit 08.05.2019 20:52

По умолчанию функция 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

Сначала импортируйте модуль datetime из datetime

from datetime import datetime

Затем выведите текущее время в формате «гггг-мм-дд чч: мм: сс».

print(str(datetime.now())

Чтобы получить только время в форме «чч: мм: сс», где сс означает полное количество секунд плюс доля прошедших секунд, просто выполните;

print(str(datetime.now()[11:])

Преобразование datetime.now () в строку дает ответ в формате, напоминающем обычные ДАТЫ И ВРЕМЯ, к которым мы привыкли.

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

Удивительно, но во всех приведенных выше ответах часовые пояса не упоминались. вы также должны включить strftime, чтобы получить желаемый формат.

GraphicalDot 30.08.2018 20:27

Я не включил это, поскольку он уже был рассмотрен в других ответах (и форматирование отображения не входило в вопрос).

kungphu 01.09.2018 00:59

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

Это так просто. Пытаться:

import datetime
date_time = str(datetime.datetime.now())
date = date_time.split()[0]
time = date_time.split()[1]

Получить атрибуты текущей даты и времени:

import datetime

currentDT = datetime.datetime.now()

print ("Current Year is: %d" % currentDT.year)
print ("Current Month is: %d" % currentDT.month)
print ("Current Day is: %d" % currentDT.day)
print ("Current Hour is: %d" % currentDT.hour)
print ("Current Minute is: %d" % currentDT.minute)
print ("Current Second is: %d" % currentDT.second)
print ("Current Microsecond is: %d" % currentDT.microsecond)


#!/usr/bin/python
import time;

ticks = time.time()
print "Number of ticks since "12:00am, Jan 1, 1970":", ticks

Этот вопрос касается Python, но поскольку Django является одной из наиболее широко используемых сред для Python, важно отметить, что если вы используете Django, вы всегда можете использовать timezone.now() вместо datetime.datetime.now(). Первый "осведомлен" о часовом поясе, а второй - нет.

См. этот ТАК ответ и Django doc для подробностей и обоснования timezone.now().

from django.utils import timezone

now = timezone.now()

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

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

выход:

Sat Sep 14 21:27:08 2019

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

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

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

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

Method1: получение текущей даты и времени из системного datetime

Модуль дата и время предоставляет классы для управления датой и временем.

Code

from datetime import datetime,date

print("Date: "+str(date.today().year)+"-"+str(date.today().month)+"-"+str(date.today().day))
print("Year: "+str(date.today().year))
print("Month: "+str(date.today().month))
print("Day: "+str(date.today().day)+"\n")

print("Time: "+str(datetime.today().hour)+":"+str(datetime.today().minute)+":"+str(datetime.today().second))
print("Hour: "+str(datetime.today().hour))
print("Minute: "+str(datetime.today().minute))
print("Second: "+str(datetime.today().second))
print("MilliSecond: "+str(datetime.today().microsecond))

Output will be like

Date: 2020-4-18
Year: 2020
Month: 4
Day: 18

Time: 19:30:5
Hour: 19
Minute: 30
Second: 5
MilliSecond: 836071

Метод 2: получение текущей даты и времени, если сеть доступна

Пакет urllib помогает нам обрабатывать URL-адреса, которые означают веб-страницы. Здесь мы собираем данные с веб-страницы http://just-the-time.appspot.com/ и анализируем dateime с веб-страницы с помощью пакета анализатор дат.

Code

from urllib.request import urlopen
import dateparser

time_url = urlopen(u'http://just-the-time.appspot.com/')
datetime = time_url.read().decode("utf-8", errors = "ignore").split(' ')[:-1]
date = datetime[0]
time = datetime[1]

print("Date: "+str(date))
print("Year: "+str(date.split('-')[0]))
print("Month: "+str(date.split('-')[1]))
print("Day: "+str(date.split('-')[2])+'\n')

print("Time: "+str(time))
print("Hour: "+str(time.split(':')[0]))
print("Minute: "+str(time.split(':')[1]))
print("Second: "+str(time.split(':')[2]))

Output will be like

Date: 2020-04-18
Year: 2020
Month: 04
Day: 18

Time: 14:17:10
Hour: 14
Minute: 17
Second: 10

Метод 3: получение текущей даты и времени из местного времени машины

Модуль Python время предоставляет функцию для получения местного времени из количества секунд, прошедших с эпохи, называемой localtime (). Функция ctime () принимает секунды, прошедшие с эпохи, в качестве аргумента и возвращает строку, представляющую местное время.

Code

from time import time, ctime
datetime = ctime(time()).split(' ')

print("Date: "+str(datetime[4])+"-"+str(datetime[1])+"-"+str(datetime[2]))
print("Year: "+str(datetime[4]))
print("Month: "+str(datetime[1]))
print("Day: "+str(datetime[2]))
print("Week Day: "+str(datetime[0])+'\n')

print("Time: "+str(datetime[3]))
print("Hour: "+str(datetime[3]).split(':')[0])
print("Minute: "+str(datetime[3]).split(':')[1])
print("Second: "+str(datetime[3]).split(':')[2])

Output will be like

Date: 2020-Apr-18
Year: 2020
Month: Apr
Day: 18
Week Day: Sat

Time: 19:30:20
Hour: 19
Minute: 30
Second: 20

Модуль time может импортировать всевозможные данные о времени, вводить сон и другие типы данных, включая - текущий тип времени.

import time
time.strftime("%T", time.localtime())

Результат должен выглядеть так

05:46:33
11:22:56
13:44:55
22:33:44
00:00:00

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

import datetime

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

или же

import datetime

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

мы можем сделать это с помощью модуля datetime

>>> from datetime import datetime
>>> now = datetime.now() #get a datetime object containing current date and time
>>> current_time = now.strftime("%H:%M:%S") #created a string representing current time
>>> print("Current Time  = ", current_time)
Current Time = 17:56:54

Кроме того, мы можем получить текущее время зоме времени, используя модуль pytZ.

>>> from pytz import timezone
>>> import pytz
>>> eastern = timezone('US/Eastern')
>>> eastern.zone
'US/Eastern'
>>> amsterdam = timezone('Europe/Amsterdam')
>>> datetime_eu = datetime.now(amsterdam)
>>> print("Europe time::", datetime_eu.strftime("%H:%M:%S"))
Europe time:: 14:45:31

Если вам нужно время для тайминговых вызовов функций, вам нужно time.perf_counter ().

start_time = time.perf_counter()
expensive_function()
time_taken = time.perf_counter() - start_time
print(f'expensive_function() took {round(time_taken,2)}s')

time.perf_counter() → float

Return the value (in fractional seconds) of a performance counter, i.e. a clock with the highest available resolution to measure a short duration. It does include time elapsed during sleep and is system-wide. The reference point of the returned value is undefined, so that only the difference between the results of consecutive calls is valid.

New in version 3.3.


time.perf_counter_ns() → int

Similar to perf_counter(), but return time as nanoseconds.

New in version 3.7.

Начиная с Python 3.9, модуль zoneinfo можно использовать для получения часовых поясов вместо использования сторонней библиотеки.

Чтобы получить текущее время в определенном часовом поясе:

from datetime import datetime
from zoneinfo import ZoneInfo

datetime.now(tz=ZoneInfo("Europe/Amsterdam"))

Последняя версия Python, доступная для загрузки, - 3.8.5! python.org/downloads

Sandun 22.08.2020 16:49

Конечно, но в будущем, когда это будут читать другие, этого не будет. Фактически, сегодня был выпущен первый релиз-кандидат: docs.python.org/3.9/whatsnew/3.9.html

Tom Carrick 23.08.2020 21:03
import datetime

print('date='+datetime.datetime.now().__str__().split(' ')[0]+' '+'time='+datetime.datetime.now().__str__().split(' ')[1]

Поскольку Qt широко используется,

from PyQt5 import QDateTime
print(QDateTime.currentDateTime().__str__().split('(')[1].rstrip(')'))

По сравнению с другими ответами, ваш ответ длинный и сложный

Molitoris 29.03.2021 09:41

Другие вопросы по теме