日期的表示方法有几种(日期的表示方法)

尼克船长 70

众所周知,excel中的日期实际上是以数字的方式存储的。

比如:1900-1-1对应数字1,1900-1-2对应数字2,以此类推。

很简单吧?!

但如果你用这样的逻辑来计算日期时,会发现计算出来的日期和 excel 中不一样。

比如45106在excel中为2023-6-29,而计算结果却是2023-6-30,尝试了用其他语言进行计算,结果都是2023-6-30。

相同数字的情况下excel显示的日期和计算结果不一致,有一个必定是错误的,于是乎从头开始试吧!!

如上图,从1开始算,到了60就发现日期不一样了,excel中60对应1900-2-29,而计算结果是1900-3-1。

再试下59,两者结果是一样的,那么问题就出在60上了。

再仔细看下——excel中是2月29号,掐指一算,1900年不是闰年,没有29号才对,看来是excel错了。

为再更加确信是exel的错,于是请教了GPT大神。

果然,微软也知道这个bug,但微软表示我就是不改。

其实保留这个bug也是出于无奈,在excel问世前,电子表格的鼻祖之一 Lotus-1-2-3 已存在这个问题,为了兼容Lotus,微软只能保留这个bug,以防止打开以往的工作表时日期出现错误,后来就一直以错误的数字,正确的显示的方式继续错下去。

平常我们不用去关心日期背后的数字是否正确,只需要显示是正确就行了。对于程序员来说,大多数情况也是直接读取出日期,使用的第三方包也已在输出日期时处理了这个问题,但如果你是先读取数字再换算成日期(比如手写代码来解析xlsx),就要注意了,xml文件中代表日期的数字在1900-2-28之后需要减1。

上一篇:

下一篇:

  推荐阅读

分享