下面的代码没有将毫秒转换为浮点数。什么是正确的方法呢?
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已经丢失。
答案 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