我正试图用Python解析从excel文件中收到的数据。为此,我使用xlrd
库。我在Excel中有一个单元格,其值为2016年5月16日12:15,我在Python中收到它,编号为42506.6493。据我所知,Excel将日期保存为自1900年1月1日以来的天数。因此,在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日。有人知道怎么处理吗?
请参阅xlrd文档,特别是Excel中关于日期的部分。
约会并不是从1900-01-01开始的。您有两天的差异,因为(1)Excel保留了Lotus 1-2-3错误,该错误认为1900是闰年;(2)即使日期确实从1900-01-01开始,也会使1900-01-01成为第1天,而不是第0天,因此您需要相应地调整时间增量。
但实际上,只需省去麻烦,使用xlrd的内置日期工具xldate_as_tuple
或xldate_as_datetime
即可。