float的datetime不包括毫秒

时间:2015-03-08 16:52:13

标签: python datetime

下面的代码没有将毫秒转换为浮点数。什么是正确的方法呢?

import datetime

def date2float(datestr):
    format = "%Y-%m-%d %H:%M:%S.%f"
    dateobj = datetime.datetime.strptime(datestr, format)
    print dateobj
    dtfloat = mktime(dateobj.timetuple())
    print dtfloat
    return dtfloat

date2float("2015-03-08 10:34:01.2")
date2float("2015-03-08 10:34:01.4")

当前输出为:

2015-03-08 10:34:01.200000
1425828841.0
2015-03-08 10:34:01.400000
1425828841.0

显然,0.2和0.4已经丢失。

1 个答案:

答案 0 :(得分:2)

mktime不处理小数秒。您可以手动添加微秒:

def date2float(datestr):
    format = "%Y-%m-%d %H:%M:%S.%f"
    dateobj = datetime.datetime.strptime(datestr, format)
    dtfloat = mktime(dateobj.timetuple())
    dtfloat += dateobj.microsecond / 1000000.0
    return dtfloat

在Python 3.3 +中:

>>> import datetime
>>> datetime.datetime.now().timestamp()
1425826728.740325