Date
如何將矢量數字 5 位數字轉換為日期格式
我正在嘗試在 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 日期;將其改編為其他系統/語言作為練習留給讀者。