如何在Python中从float
得到datetime
?
例如,我有一个浮点数,如43111.0,我想得到这个datetime
。
看起来像Excel日期时间格式,称为串行日期。快速而肮脏的转换方法:
>>> import datetime
>>> serial = 43111.0
>>> seconds = (serial - 25569) * 86400.0
>>> datetime.datetime.utcfromtimestamp(seconds)
datetime.datetime(2018, 1, 11, 0, 0)
试试这个:
from datetime import datetime
datetime.fromtimestamp(*your_timestamp_here*).strftime('%Y-%m-%d')
import datetime, time
print datetime.datetime.fromtimestamp(time.time())
print datetime.datetime.fromtimestamp(43111.0)
所以,用一点数学:
如果43111是2018年1月11日,那么0是1899年12月30日。Python有datetime.date.fromordinal()
返回与预知的格里高利序数相对应的日期,其中第1年的1月1日是序数1。除非1,否则会引发ValueError<= ordinal <= date.max.toordinal()。对于任意日期d,Date.fromordinal (d.toordinal()) == d.
如果你用一个偏移量,你有:
>>> dateoffset = 693594
>>> datetime.date.fromordinal(dateoffset + 43111)
datetime.date(2018, 1, 11)
希望这有助于,即使它不工作的浮动
这是另一种方法
from pyxlsb import convert_date
convert_date(value)
可以使用
format(convert_date(value), '%m/%d/%Y')