Как узнать текущее время в Python - PullRequest
2388 голосов
/ 06 января 2009

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

Ответы [ 33 ]

11 голосов
/ 20 мая 2014
>>> import datetime, time
>>> time = strftime("%H:%M:%S:%MS", time.localtime())
>>> print time
'00:20:58:20S'
11 голосов
/ 18 июля 2016

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

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)
10 голосов
/ 13 августа 2018

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

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

>>> import pendulum
>>> print(pendulum.now())
2018-08-14T05:29:28.315802+10:00
>>> print(pendulum.utcnow())
2018-08-13T19:29:35.051023+00:00

Существует множество стандартов, которые необходимо учитывать, в том числе несколько RFC и ISO. Когда-нибудь перепутать их; не беспокойтесь, взгляните немного на dir(pendulum.constants) Хотя здесь есть немного больше, чем форматы RFC и ISO.

Когда мы говорим местный, что мы имеем в виду? Ну, я имею в виду:

>>> print(pendulum.now().timezone_name)
Australia/Melbourne
>>>

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

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

9 голосов
/ 18 июля 2018

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

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

from datetime import datetime

import pytz


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


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

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

6 голосов
/ 29 ноября 2017

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

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

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

час

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

Минута:

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

Второе:

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

миллисекунды:

def getmillisecond():
        from datetime import datetime
        return return (str(datetime.now())).split('.')[1]
6 голосов
/ 01 мая 2015

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

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

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

6 голосов
/ 14 июля 2016
import datetime
date_time = str(datetime.datetime.now()).split()
date,time = date_time

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

3 голосов
/ 04 марта 2019

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

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
3 голосов
/ 16 января 2018
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'] (делитер по умолчанию) это пространство).

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...