Использование %f с strftime () в Python для получения микросекунд
Я пытаюсь использовать strftime () для микросекундной точности, что кажется возможным с помощью %f (как указано здесь). Однако, когда я пробую следующий код:
import time
import strftime from time
print strftime("%H:%M:%S.%f")
...Я получаю час, минуты и секунды, но %f печатает как %f, без каких-либо признаков микросекунд. Я запускаю Python 2.6.5 на Ubuntu, поэтому он должен быть в порядке, и %f должен поддерживаться (он поддерживается для 2.6 и выше, насколько я знаю.)
6 ответов
вы можете использовать функцию strftime datetime для получения этого. Проблема в том, что strftime времени принимает timetuple, который не несет микросекундной информации.
from datetime import datetime
datetime.now().strftime("%H:%M:%S.%f")
должен сделать трюк!
вы смотрите на неправильную документацию. The time
модуль имеет различную документацию.
можно использовать datetime
модуль strftime
такой:
>>> from datetime import datetime
>>>
>>> now = datetime.now()
>>> now.strftime("%H:%M:%S.%f")
'12:19:40.948000'
Это должно сделать работу
import datetime
datetime.datetime.now().strftime("%H:%M:%S.%f")
Он будет печатать
HH:MM:SS.microseconds
как это e.g 14:38:19.425961
когда "%f " для микро секунд не работает, пожалуйста, используйте следующий метод
import datetime
def getTimeStamp():
dt = datetime.datetime.now()
return dt.strftime("%Y%j%H%M%S") + str(dt.microsecond)
С python time
модуль вы не можете получить микросекунды с %f
.
для тех, кто все еще хочет пойти с time
только модуль, вот обходной путь:
now = time.time()
mlsec = repr(now).split('.')[1][:3]
print time.strftime("%Y-%m-%d %H:%M:%S.{} %Z".format(mlsec), time.localtime(now))
вы должны получить что-то вроде 2017-01-16 16:42: 34.625 EET (да, я использую миллисекунды, поскольку этого достаточно).
чтобы затормозить код в деталях, вставьте ниже код в консоль python:
import time
# get current timestamp
now = time.time()
# debug now
now
print now
type(now)
# debug strf time
struct_now = time.localtime(now)
print struct_now
type(struct_now)
# print nicely formatted date
print time.strftime("%Y-%m-%d %H:%M:%S %Z", struct_now)
# get miliseconds
mlsec = repr(now).split('.')[1][:3]
print mlsec
# get your required timestamp string
timestamp = time.strftime("%Y-%m-%d %H:%M:%S.{} %Z".format(mlsec), struct_now)
print timestamp
для целей уточнения я также вставляю свой python 2.7.12 результат здесь:
>>> import time
>>> # get current timestamp
... now = time.time()
>>> # debug now
... now
1484578293.519106
>>> print now
1484578293.52
>>> type(now)
<type 'float'>
>>> # debug strf time
... struct_now = time.localtime(now)
>>> print struct_now
time.struct_time(tm_year=2017, tm_mon=1, tm_mday=16, tm_hour=16, tm_min=51, tm_sec=33, tm_wday=0, tm_yday=16, tm_isdst=0)
>>> type(struct_now)
<type 'time.struct_time'>
>>> # print nicely formatted date
... print time.strftime("%Y-%m-%d %H:%M:%S %Z", struct_now)
2017-01-16 16:51:33 EET
>>> # get miliseconds
... mlsec = repr(now).split('.')[1][:3]
>>> print mlsec
519
>>> # get your required timestamp string
... timestamp = time.strftime("%Y-%m-%d %H:%M:%S.{} %Z".format(mlsec), struct_now)
>>> print timestamp
2017-01-16 16:51:33.519 EET
>>>
надеюсь, что это помогает.