2017-02-09 4 views
0

Я получаю объект дата:миллисекунды в формат строки/даты

now = datetime.utcnow() 
print(now) 

2017-02-09 14:00:31.256382 

Затем, делая строковое представление:

to_string = now.strftime("%Y-%m-%d %H:%M:%S.%f") 
print(to_string) 

2017-02-09 14:00:31.256382 (it is a str object) 

Я преобразовать его в секунды:

sec = now.replace(tzinfo=timezone.utc).timestamp() 
print(sec) 

1486648831.256382 

1) Я пытаюсь вернуть представление строки:

back = time.strftime("%Y-%m-%d %H:%M:%S.%f", time.gmtime(x)) 
print(back) 

2017-02-09 14:00:31.%f 

Не могу понять, как представить миллисекунды. Обратите внимание, что timestamp возвращает секунды, а не миллисекунды.

2) Если я хочу вернуться с секунд (или миллисекунд в моем случае) к объекту date, а не к объекту строки?

+0

О мс в строковом представлении: Я думаю, что вы хотели 'now.strftime ("% Y-% m-% d% H:% M:% S.% f ")' вместо 'time.strftime' –

ответ

3

Используйте метод utcfromtimestamp.

from datetime import datetime 

ts = 1486648831.256382 
print (datetime.utcfromtimestamp(ts)) 
>>> 2017-02-09 14:00:31.256382 

classmethod datetime.utcfromtimestamp (метка времени)

Возвращает UTC даты и времени, соответствующие метки времени POSIX, с tzinfo None. Это может повысить значение ValueError, если метка времени находится вне диапазона значений , поддерживаемых функцией C gmtime() платформы. Это общий для этого должен быть ограничен годами с 1970 по 2038 год. См. Также также fromtimestamp().

Возвращаемый объект <class 'datetime.datetime'>

+0

Хорошо, спасибо! Что касается миллисекунд, то не имеет значения, что временная метка возвращает секунды, так как вы можете представить строку так, как хотите, правильно? – George

+0

@George, это правильно. –

Смежные вопросы