Python 要浮动的日期时间不包括毫秒

Python 要浮动的日期时间不包括毫秒,python,datetime,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

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

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已丢失。

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

mktime()
(以及内部使用它的
timestamp()
)在DST转换期间以及过去/将来的日期可能会失败,如果您的本地时区在不同的时间可能有不同的utc偏移量(许多时区都有)。使用与本地时区相对应的显式
pytz
时区来避免问题。输入时区是什么?它应该是默认时区,但在我的情况下,我不关心它。如果你不关心使用错误时区时的错误,为什么要关心毫秒?