如何将向量数 5 位数字转换为日期格式

如何将向量数 5 位数字转换为日期格式

我正在尝试在 shell 脚本中将日期格式(例如 10/03/2018)转换为 43376,这可以通过使用格式单元格选项作为 Excel 中的数字来完成。如何在 shell 脚本中做到这一点?

答案1

假设有关此的信息博客是的,这个公式应该可以做到:

date_to_msidx(){ echo $(( $(TZ=UTC date -d "$1" +%s) / 86400 + 25569)); }

date_to_msidx 10/03/2018
43376
date_to_msidx 07/05/1998
35981

这是《1900 年日期系统》微软;自 1900 年 1 月 1 日起的天数从 1 开始,但是不正确地考虑到 1900 年是闰年(比实际时间长一天)。

该公式首先将date +%s其转换为 Unix 时间(自 1970/01/01 以来的秒数),除以一天中的秒数 (86400),然后加上从 1900/01/01 到 1970/ 的天数01/01 (25569) 使用上述系统预先计算。

这是假设 GNU 日期;使其适应其他系统/语言留给读者作为练习。

相关内容