我正在尝试在 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 日期;使其适应其他系统/语言留给读者作为练习。