我正在尝试解析我从Python中的excel文件中收到的数据。为此我使用xlrd
库。我在Excel中有一个单元格,其价值是2016年5月16日12:15,我在Python中收到42506.6493。我知道Excel将日期保存为自19/1/19以来的天数。所以在Python中我试图使用下面的代码添加这个天数(现在只有几天没有代表时间的分数)来获得相同的日期:
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)
,而它应该是5月16日而不是18。有人知道如何处理这个吗?
答案 0 :(得分:1)
请参阅xlrd documentation,尤其是dates in Excel上的部分。
日期并不是真的从1900-01-01开始。你有一个两天的差异,因为(1)Excel保留Lotus 1-2-3错误,考虑1900年闰年和(2)即使日期确实开始于1900-01-01,那将使1900-01 -01第1天,而不是第0天,所以你需要相应地调整你的timedelta。
但实际上,只需省去麻烦并使用xlrd的内置日期工具xldate_as_tuple
或xldate_as_datetime
。