在Python中从float获取日期时间

在Python中从float获取日期时间,python,datetime,Python,Datetime,在Python中,如何从float中获取datetime 例如,我有一个浮点数,比如43111.0,我想得到这个浮点数的日期时间 import datetime, time print datetime.datetime.fromtimestamp(time.time()) print datetime.datetime.fromtimestamp(43111.0) 如果43111是2018年1月11日,那么0是1899年12月30日。 Python有 返回与前公历序号对应的日期, 其中,第

在Python中,如何从
float
中获取
datetime


例如,我有一个浮点数,比如43111.0,我想得到这个浮点数的
日期时间

import datetime, time

print datetime.datetime.fromtimestamp(time.time())
print datetime.datetime.fromtimestamp(43111.0)
如果43111是2018年1月11日,那么0是1899年12月30日。 Python有

返回与前公历序号对应的日期, 其中,第1年的1月1日具有序号1。除非1,否则将引发ValueError
看起来像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')
这是另一种方法 你可以用

format(convert_date(value), '%m/%d/%Y')

如果您想格式化它。

43111.0应该是什么?这是一个奇怪的非标准时间戳吗?43111是2018年1月11日的数字格式。你对此有什么规定吗?@Jacob通常浮点数作为日期是从纪元算起的天。小数点左边的所有内容通常是秒或毫秒。感谢您的回答,但43111.0不是时间戳,它是2018年1月11日的flaot数字格式。在我看来,这并不太脏,因为Excel日期实际上只是一个具有不同起点的时间戳。有两件事需要注意:(1)fromtimestamp()包含时区信息,这可能是可取的,也可能是不可取的(我猜通常是不可取的——请注意结果末尾的2,0)。要解决此问题,请改用utcfromtimestamp()。(2) 此方法无法支持早于1970年的日期。请编辑我的答案以使用utcfromtimestamp():)如果使用序数,则必须单独处理小数部分:(从.xlsb开始,不少于,tyvm
from pyxlsb import convert_date
convert_date(value)
format(convert_date(value), '%m/%d/%Y')