Epoch时间python和excel

时间:2016-02-03 22:16:46

标签: python excel excel-vba vba

我正在尝试在excel文件和数据处理文件中自动执行某些数据处理我使用的宏我想将日期列从“mm / dd / yyyy”转换为自1900年1月1日以来的日期excel惯例。所以当我尝试在Python 2.7.4中做类似的事情时。好像是2天假。例如,当excel宏完成时,2/25/2015变为42060。当我运行此代码时:

import datetime

gotDay = datetime.date(2015,2,25)
epoch = datetime.date(1900,1,1)

print((gotDay-epoch).days)

我得到42058。

我完全可以在Python中添加2,但我想知道为什么会这样。

谢谢!

2 个答案:

答案 0 :(得分:0)

正确答案是42058,所以excel宏有问题。

我的猜测是,excel会将开始日期和结束日期计算为一天,而实际上您只对那些日期之间的时间感兴趣。

就像说今天和明天之间有多少天。你可以说一个,这是python正在做的,或者你可以说3(今天,明天和明天)这就是我猜你的excel宏正在做的事情。

答案 1 :(得分:0)

这是一个老线程,但自从它出现在谷歌之后,我想提出一个答案。二分之二的问题解释如下:

  1. 有一天因为1900-01-01是第1天,而不是第0天。在Excel中,如果将1900/1/1转换为数字,则给出答案1,而不是0.在python中: print((datetime.date(1900,1,1)-datetime.date(1900,1,1)).days) = 0。

  2. 另一天因为Excel在Lotus 1-2-3中实现了向后兼容性的错误。显然,莲花1-2-3错误地认为1900年是闰年。 https://support.microsoft.com/en-us/help/214326/excel-incorrectly-assumes-that-the-year-1900-is-a-leap-year