Date

如何將矢量數字 5 位數字轉換為日期格式

  • November 30, 2018

我正在嘗試在 shell 腳本中將日期格式轉換為 10/03/2018 到 43376,這可以通過使用格式單元格選項作為 excel 中的數字來完成。如何在 shell 腳本中做到這一點?

假設這個部落格上的資訊是真的,這個公式應該可以做到:

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 以來的 ~secs),將其除以一天中的秒數(86400),然後將 1900/01/01 到 1970/ 的天數相加01/01 (25569) 使用上述系統預先計算。

這是假設 GNU 日期;將其改編為其他系統/語言作為練習留給讀者。

引用自:https://unix.stackexchange.com/questions/485062