当试图找出自 1900 年 1 月 1 日以来已经过去了多少天时,为什么 Excel 得到的结果与 PowerShell 和 Google 不同?

Sim*_*onS 5 date-time microsoft-excel

一位同事告诉我:“自 1900 年 1 月 1 日以来,已经过去了 43871 天”。今天是 2020 年 2 月 10 日。

我想用 PowerShell 检查一下,但得到了另一个结果:

PS C:\Windows\system32> New-TimeSpan ([datetime]"01.01.1900") (Get-Date)


Days              : 43869
Hours             : 11
Minutes           : 15
Seconds           : 46
Milliseconds      : 304
Run Code Online (Sandbox Code Playgroud)

所以我很困惑,因为有两天的差异。于是我向谷歌大神请教:

GoogleDaysPassed 搜索

正如你所看到的,谷歌还说已经过去了 43869 天,而不是 43871 天。

于是我就问我的朋友他是怎么算的。他在 Excel 中通过将单元格格式设置为dateonly. 当他int在其中写入 an 时,Excel 会将其转换为日期,例如

  • 15641变成27.10.1942
  • 19874变成30.05.1954
  • 43869变成08.02.2020(?)
  • 43871变成10.02.2020(?)

Excel 是否比我们早 2 天,或者为什么它认为自 1900 年 1 月 1 日以来比实际时间多了 2 天?是不是少了什么东西?

这是它的一个小 gif(不幸的是,因为我有德语 Excel,所以是德语):

Excel计算Gif

Ron*_*eld 4

原因:

首先,你的朋友和谷歌的计算方式不同。Excel(使用 1900 日期系统)仅认为自 1900 年以来多了一天。

Excel 将日期存储为序列号,其中1-Jan-1900= 1 And 10-Feb-2020-->43871

所以Excel以来的天数43871应该是- 1-->43870

但是,Excel 计算不正确。

当 Excel 推出时,Lotus123 是领先的电子表格程序。

Lotus 123 有一个错误,它认为 1900 年是闰年。

鉴于竞争,出于兼容性考虑,Excel 包含了该错误。但是,由于是一个不存在的日期,因此在减去两个日期时29-Feb-1900,其他方法将正确显示。43869

顺便说一下,Excel VBA 也能正确计算日期差 -->43869