Потеря микросекундной части при преобразовании строки даты в объект datetime в python - PullRequest
3 голосов
/ 03 августа 2011

У меня есть следующая строка даты:

dtstr = '2010-12-19 03:44:34.778000'

Я хотел преобразовать ее в объект datetime, поэтому я поступил следующим образом:

import time
from datetime import datetime

dtstr = '2010-12-19 03:44:34.778000'
format = "%Y-%m-%d %H:%M:%S.%f"
datetime.fromtimestamp(time.mktime(time.strptime(dtstr,format)))

Но это вернуло: datetime.datetime(2010, 12, 19, 3, 44, 34) вместо datetime.datetime(2010, 12, 19, 3, 44, 34,778000)

Почему пропущена микросекундная часть?Как я могу получить datetime.datetime(2010, 12, 19, 3, 44, 34,778000)?

Пожалуйста, помогите Спасибо

Ответы [ 2 ]

7 голосов
/ 03 августа 2011
from datetime import datetime

dtstr = '2010-12-19 03:44:34.778000'
format = "%Y-%m-%d %H:%M:%S.%f"
a = datetime.strptime(dtstr,format)
print a.microsecond

time обрабатывает секунды с начала эпохи Unix, поэтому использование time теряет микросекунды.Используйте datetime.strptime напрямую.

2 голосов
/ 03 августа 2011

Объект time.struct_time, возвращаемый time.strptime, не хранит миллисекунды:

In [116]: time.strptime(dtstr,"%Y-%m-%d %H:%M:%S.%f",)
Out[116]: time.struct_time(tm_year=2010, tm_mon=12, tm_mday=19, tm_hour=3, tm_min=44, tm_sec=34, tm_wday=6, tm_yday=353, tm_isdst=-1)

Но объект даты и времени, возвращаемый dt.datetime.strptime, хранит миллисекунды:

In [117]: import datetime as dt

In [118]: dt.datetime.strptime(dtstr,"%Y-%m-%d %H:%M:%S.%f")
Out[118]: datetime.datetime(2010, 12, 19, 3, 44, 34, 778000)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...