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

avatar
user46646
6 января 2009 в 04:54
3658321
51
3327

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

Источник
Sławomir Lenart
29 апреля 2020 в 17:12
33

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

Anupam
19 сентября 2020 в 06:42
1

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

Ответы (51)

avatar
Harley Holcombe
6 января 2009 в 04:57
3451

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

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

Greg Lindahl
1 октября 2018 в 21:41
43

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

JiyuuSensei
18 октября 2019 в 07:04
10

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

RTHarston
29 октября 2019 в 15:04
0

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

Harley Holcombe
31 октября 2019 в 20:15
0

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

RTHarston
1 ноября 2019 в 05:58
0

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

Chiel
22 марта 2021 в 15:10
0

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

ingyhere
9 апреля 2021 в 18:13
0

@GregLindahl Timezone Aware: datetime.datetime.now(tz=pytz.UTC).astimezone() ... Или что-то подобное, например, фактический часовой пояс, в котором расположена система. В качестве альтернативы, datetime.datetime.now(datetime.timezone.utc).astimezone() или datetime.datetime.utcnow().astimezone() в зависимости от версии Python и варианта использования.

avatar
rachwa
18 апреля 2022 в 21:13
0

Если вы используете Панды много (как я), вы можете использовать Timestamp, который является эквивалентом <292023202320232023202320232087629204>, что является эквивалентом. Datetime>:

import pandas as pd
pd.Timestamp.now()

И только время:

pd.Timestamp.now().strftime('%H:%M:%S')
avatar
Mr. Day
23 марта 2022 в 14:33
0

Это должно работать

import time

now = datetime.now()

current_time = now.strftime("%H:%M:%S")

print("The current time is", current_time)

user2458922
25 апреля 2022 в 21:35
0

Это работает... Интересно, почему кто-то отметил -1

avatar
Kofi
20 февраля 2022 в 05:55
2

Атрибуты now() можно использовать для получения текущего времени в python:

# importing datetime module for now()
import datetime
    
# using now() to get current time
current_time = datetime.datetime.now()
    
# Printing attributes of now().
print ("The attributes of now() are : ")
    
print ("Year : ", end = "")
print (current_time.year)
    
print ("Month : ", end = "")
print (current_time.month)
    
print ("Day : ", end = "")
print (current_time.day)
    
print ("Hour : ", end = "")
print (current_time.hour)
    
print ("Minute : ", end = "")
print (current_time.minute)
    
print ("Second : ", end = "")
print (current_time.second)
    
print ("Microsecond : ", end = "")
print (current_time.microsecond)
avatar
Matei Piele
13 февраля 2022 в 18:53
1

Получает текущее время и преобразует его в строку:

from datetime import datetime
datetime.now().strftime('%Y-%m-%d %H:%M:%S')
avatar
Abduvahob Kaxarov
20 января 2022 в 08:17
2

Если вы используете его для django, дата и время иногда не будут работать на сервере, поэтому я рекомендую использовать часовой пояс

Но для использования часового пояса django вы должны установить код часового пояса своей страны в настройках.py

TIME_ZONE = 'Asia/Tashkent'

Тогда вы можете использовать его

from django.utils import timezone

timezone.now() // for date time

timezone.now().year // for yaer

timezone.now().month // for month

timezone.now().day // for day 

timezone.now().date // for date

timezone.now().hour // for hour

timezone.now().weekday // for minute

или если вы хотите использовать на python

import time

time.strftime('%X') // '13:12:47'

time.strftime('%x') // '01/20/22'

time.strftime('%d') // '20' day

time.strftime('%m') // '01' month

time.strftime('%y') // '20' year

time.strftime('%H') // '01' hour

time.strftime('%M') // '01' minute

time.strftime('%m') // '01' second
avatar
Sankar guru
17 января 2022 в 13:53
0

Используйте этот метод для UTC DateTime, локальной даты и времени и конвертируйте am и pm

import pytz
from datetime import datetime

#UTC Time
print("UTC Date and time")
epoch: datetime =datetime.now().replace(tzinfo=pytz.utc)
print(epoch)

#local date and time
print("Local Date and time")
today = datetime.now()
local_time = today.strftime("%Y-%M-%d:%H:%M:%S")
print(local_time)

#convert time to AM PM format
print("Date and time AM and PM")
now = today.strftime("%Y-%M-%d:%I:%M %p")
print(now)
Wolfgang Kuehn
21 января 2022 в 12:27
0

Понижение за использование устаревшего pytz, усугубляемое тем фактом, что также есть datetime.timezone.utc.

avatar
RITIK KUMAR
8 сентября 2021 в 10:57
9

попробуйте это:-

from datetime import datetime

now = datetime.now()

current_time = now.strftime("%H:%M:%S")
print("Current Time =", current_time)
avatar
Faraaz Kurawle
21 июня 2021 в 10:05
1

Вот код, который показывает время только в соответствии с вашим вопросом:

 from datetime import datetime

 while True:
          time= datetime.now()
          b = time.strftime("%H:%M:%S")
          print(b, end='\r')

Этот код будет отображать текущее время вашей системы без остановки.

avatar
Harsh
29 марта 2021 в 06:09
3
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 марта 2021 в 06:41
3

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

avatar
Tom Carrick
27 июня 2020 в 10:10
2

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

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

from datetime import datetime
from zoneinfo import ZoneInfo

datetime.now(tz=ZoneInfo("Europe/Amsterdam"))
Sandun
22 августа 2020 в 13:49
0

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

Tom Carrick
23 августа 2020 в 18:03
0

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

avatar
James McGuigan
17 июня 2020 в 09:15
1

Если вам нужно время для тайминговых вызовов функций, тогда вам нужно 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

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

Новое в версии 3.3.


time.perf_counter_ns () → int

Подобно perf_counter (), но возвращает время в наносекундах.

Новое в версии 3.7.

avatar
Ransaka Ravihara
13 июня 2020 в 12:49
4

мы можем сделать это с помощью модуля 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
avatar
Umutambyi Gad
4 июня 2020 в 22:29
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"))
avatar
Lucas Urban
20 апреля 2020 в 12:53
4

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

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

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

05:46:33
11:22:56
13:44:55
22:33:44
00:00:00
avatar
Littin Rajan
18 апреля 2020 в 14:32
10

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

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

Код

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

Вывод будет похож на

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

Код

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

Вывод будет иметь вид

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

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

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

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

Код

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

Вывод будет похож на

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

Time: 19:30:20
Hour: 19
Minute: 30
Second: 20
avatar
champion-runner
18 октября 2019 в 13:09
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
avatar
Jobin James
12 октября 2019 в 18:09
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
avatar
Sai Kiran Sangam
14 сентября 2019 в 16:00
11

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

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

вывод:

Sat Sep 14 21:27:08 2019

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

avatar
Anupam
5 июня 2019 в 10:19
9

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

См. Этот ответ SO и Django doc для получения подробной информации и обоснования timezone.now().

from django.utils import timezone

now = timezone.now()
avatar
Ram Prajapati
4 марта 2019 в 08:40
7

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

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
avatar
Sachin
21 января 2019 в 09:42
7

Это так просто. Попробуйте:

import datetime
date_time = str(datetime.datetime.now())
date = date_time.split()[0]
time = date_time.split()[1]
avatar
Ben
13 августа 2018 в 20:08
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. Это заслуживает внимания, особенно из-за простоты использования и обширной документации.

avatar
motagirl2
18 июля 2018 в 07:11
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))
avatar
kungphu
6 июля 2018 в 08:24
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().

GraphicalDot
30 августа 2018 в 17:27
0

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

kungphu
31 августа 2018 в 21:59
1

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

avatar
Samuel Nde
24 мая 2018 в 20:27
4

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

from datetime import datetime

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

print(str(datetime.now())

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

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

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

avatar
Madhusudhan R
1 марта 2018 в 11:34
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
avatar
Bojan Petrovic
16 января 2018 в 14:45
6
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'] (разделитель по умолчанию это пробел).

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

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

Toby Speight
16 января 2018 в 16:09
1

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

gerrit
8 мая 2019 в 17:52
1

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

avatar
Richie Bendall
29 ноября 2017 в 08:22
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]
avatar
durjoy
7 ноября 2017 в 06:17
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'))
avatar
prudhvi Indana
22 сентября 2017 в 12:45
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
bfree67
29 сентября 2020 в 03:12
0

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

avatar
theBuzzyCoder
9 апреля 2017 в 04:17
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

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

theBuzzyCoder
21 апреля 2017 в 04:44
0

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

avatar
C8H10N4O2
19 августа 2016 в 19:45
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])

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

sudobangbang
28 октября 2016 в 15:01
20

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

Roland
27 апреля 2021 в 09:42
0

Замечательно иметь другой источник времени, чем встроенные часы! Даже неплохая альтернатива более логичному выбору NTP.

avatar
y.selivonchyk
18 июля 2016 в 09:45
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)
Greg Graham
27 сентября 2016 в 14:41
1

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

avatar
Abhijeet Deshani
14 июля 2016 в 05:50
8
import datetime
date_time = str(datetime.datetime.now()).split()
date,time = date_time

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

avatar
Back2Basics
14 ноября 2015 в 02:02
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'
jfs
14 ноября 2015 в 09:00
7

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

avatar
Amro elaswar
1 мая 2015 в 01:39
8

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

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

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

avatar
Aaron Hall
18 февраля 2015 в 05:08
434

Как узнать текущее время в 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'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 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 с учетом часового пояса.

ArtOfWarfare
6 сентября 2020 в 03:32
0

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

Aaron Hall♦
6 сентября 2020 в 05:16
0

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

avatar
Tom
6 февраля 2015 в 17:46
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'
avatar
Kristen G.
9 января 2015 в 18:24
29

Вот что я в итоге выбрал:

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

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

strftime format code table

jfs
9 января 2015 в 23:36
2

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

Kristen G.
15 января 2015 в 20:09
1

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

jfs
15 января 2015 в 20:19
2

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

avatar
jfs
22 декабря 2014 в 22:52
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
Seth
14 июня 2021 в 18:35
0

К вашему сведению, не рекомендуется использовать datetime.utcnow() для представления текущего времени в формате UTC, поскольку он по-прежнему возвращает «наивный» объект datetime - вместо этого рекомендуется использовать datetime.now(timezone.utc), поскольку он возвращает «осведомленный» объект datetime. Дополнительные сведения см. В документации Python: docs.python.org/3/library/…

jfs
15 июня 2021 в 18:42
0

@Seth замечает, что решение Python 3.2+ уже использует timezone.utc. Возможно, теперь, когда Python 2.7 закрыт EOL, naive-datetime может быть удалено

Seth
18 июня 2021 в 17:45
0

Ах, я не понимал, что это было сделано исключительно для совместимости с Python 2.7 - возможно, это следует уточнить в посте? По крайней мере, мне казалось, что этот пост подразумевал, что как наивные, так и осведомленные методы были (все еще) одинаково приемлемыми способами получения времени в формате UTC, поэтому я указал, что это не то, что говорится в (последней) документации Python.

avatar
user2030113
20 мая 2014 в 07:13
19
>>> import datetime, time
>>> time = time.strftime("%H:%M:%S:%MS", time.localtime())
>>> print time
'00:21:38:20S'
hlin117
26 октября 2014 в 20:46
0

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

user2030113
4 ноября 2014 в 10:02
0

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

ZF007
13 июня 2019 в 20:23
4

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

avatar
Ethereal
31 октября 2013 в 15:39
76

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

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

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

TheTechRobo36414519
25 мая 2020 в 17:35
0

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

avatar
nacholibre
24 сентября 2013 в 11:21
69

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

>>> import time
>>> time.strftime("%Y%m%d")
'20130924'
avatar
emmagras
25 июня 2013 в 00:38
42

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

>>> import datetime
>>> datetime.datetime.now().isoformat()
'2013-06-24T20:35:55.982000'
avatar
ParaMeterz
9 января 2013 в 05:50
718
from datetime import datetime
datetime.now().strftime('%Y-%m-%d %H:%M:%S')

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

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

avatar
Ray
4 мая 2011 в 00:56
486

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

>>> from datetime import datetime
>>> str(datetime.now())
'2011-05-03 17:45:35.177000'
pppery
11 апреля 2019 в 21:06
3

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

RTHarston
29 октября 2019 в 15:21
10

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

John
10 января 2020 в 20:09
6

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

pppery
21 февраля 2020 в 04:55
3

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

Ice Bear
31 декабря 2020 в 15:20
1

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

avatar
bluish
27 декабря 2010 в 10:24
58

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

>>> import datetime
>>> now = datetime.datetime.now()
>>> datetime.time(now.hour, now.minute, now.second)
datetime.time(11, 23, 44)
avatar
maxp
6 января 2009 в 13:55
142

Сделать

from time import time

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

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

Reinstate C0MMUNiSM
11 декабря 2019 в 20:16
0

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

avatar
Vijay Dev
6 января 2009 в 05:02
110
>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %X +0000", gmtime())
'Tue, 06 Jan 2009 04:54:56 +0000'

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

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

avatar
Sean James
6 января 2009 в 04:59
1057

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

>>> from time import gmtime, strftime
>>> strftime("%Y-%m-%d %H:%M:%S", gmtime())
'2009-01-05 22:14:39'
Nathan
29 апреля 2018 в 16:17
55

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

Saeed
29 октября 2018 в 11:51
4

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

Voyager
12 марта 2019 в 08:11
11

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

Jeyekomon
3 июля 2019 в 11:33
22

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

Packard CPW
30 сентября 2019 в 04:32
4

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