如何计算 Excel 日期生成的自 1900 年以来的天数?

huangapple go评论124阅读模式
英文:

How to calculate days since 1900 generated by excel date?

问题

Excel正在将日期03/11/2021转换为值44535,这似乎是自1900年以来的天数。我正在尝试找出一种使用自己的Golang库进行计算的方法。有人遇到过这样的问题吗?

非常感谢您的帮助。

英文:

Excel is converting the date 03/11/2021 to value 44535, which seems to be days since 1900. I´m trying to figure out a way to calculate this using my own golang libs. Does anyone have this kind of problem?

Thank you a lot for your help

答案1

得分: 2

这个问题的一个不太正式的解决方法是使用addDays函数。

d := time.Date(1900, 1, 1, 0, 0, 0, 0, time.UTC)
fmt.Println(d) // 1900-01-01 00:00:00 +0000 UTC

d2 := d.AddDate(0, 0, 44503)
fmt.Println(d2) // 2021-11-05 00:00:00 +0000 UTC

输出结果为:05/11/2021,比我们期望的多了2天。

下面是使用JavaScript实现相同功能的代码:

date = new Date(1900, 0, 1)
// Mon Jan 01 1900 00:00:00 GMT-0338 (Amazon Standard Time)
date.setDate(date.getDate() + 44503)
// Fri Nov 05 2021 00:00:00 GMT-0400 (Amazon Standard Time)

经过一些关于这2天的研究,我在@chux-reinstate-monica的评论中找到了这个链接

> 如果你选择使用MS Excel来检查你的工作,请注意两件事:1)1900年1月1日是第1天(而不是自1900年1月1日以来的天数),2)根据Excel的说法,1900年2月29日是存在的(这是他们拒绝修复的一个错误)。

因此,我们可以从中减去2天,得到:03/11/2021。

英文:

A not so fency workaround for this problem would be addDays

d := time.Date(1900, 1, 1, 0, 0, 0, 0, time.UTC)
fmt.Println(d) // 1900-01-01 00:00:00 +0000 UTC

d2 := d.AddDate(0, 0, 44503)
fmt.Println(d2) // 2021-11-05 00:00:00 +0000 UTC

Would print: 05/11/2021 witch is 2 days more than what we desire.

Here we can see the same using JavaScript:

date = new Date(1900, 0, 1)
// Mon Jan 01 1900 00:00:00 GMT-0338 (Amazon Standard Time)
date.setDate(date.getDate() + 44503)
// Fri Nov 05 2021 00:00:00 GMT-0400 (Amazon Standard Time)

After some research about this 2 days I found this in a comment by @chux-reinstate-monica:

> If you choose to use MS Excel to check your work note 2 things: 1) Jan 1, 1900 is day 1 (not the number of days since Jan 1, 1900) and 2) according to Excel Feb 29, 1900 exists(a bug in their code they refuse to fix.)

So we can substract 2 days from that to have: 03/11/2021.

huangapple
  • 本文由 发表于 2021年12月7日 22:01:46
  • 转载请务必保留本文链接:https://go.coder-hub.com/70261525.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定