Pythondate时间和Excel之间的date转换差异
我试图parsing从Python中的Excel文件中收到的数据。 为此,我正在使用xlrd
库。 我在Excel中有一个单元格,其值是5/16/2016 12:15,而我在Python中以42506.6493的格式收到它。 我知道Excel将date保存为自1/1/1900以来的天数。 所以在Python中,我试图添加这个天数(现在没有表示时间的分数的几天)来获得相同的date,使用下面的代码:
orgDate = datetime.datetime(1900,1,1,0,0,0,0) xlVal = 42506.6493 newDate = orgDate + datetime.timedelta(days=int(xlVal))
但是,当我读到newDate
的值时,我发现它是datetime.datetime(2016, 5, 18, 0, 0)
newDate
datetime.datetime(2016, 5, 18, 0, 0)
而应该是5月16日不是18.任何人都知道如何处理这个?
请参阅xlrd 文档 ,特别是Excel中date部分。
date并不真正从1900-01-01开始。 你有一个两天的差异,因为(1)Excel保留了Lotus 1-2-3的bug,1900年是闰年;(2)即使date是1900-01-01开始,那么1900-01 -01第1天,而不是第0天,所以你需要相应地调整你的timedelta。
但是,真的,只要省去麻烦,并使用xlrd的内置date设施, xldate_as_tuple
或xldate_as_datetime
。