【问题标题】:Microsecond part lost when converting a date string to a datetime object in python在 python 中将日期字符串转换为日期时间对象时丢失微秒部分
【发布时间】:2011-10-18 14:34:27
【问题描述】:

我有以下日期字符串:

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

我想将它转换为日期时间对象,所以我进行了如下操作:

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)

请帮忙 谢谢你

【问题讨论】:

标签: python datetime time


【解决方案1】:
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】:

    time.strptime返回的time.struct_time对象不存储毫秒:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-09
      • 2016-12-14
      • 1970-01-01
      • 1970-01-01
      • 2011-07-11
      • 2015-03-24
      • 2012-09-17
      • 1970-01-01
      相关资源
      最近更新 更多