
シェルスクリプトで日付形式(2018年10月3日など)を43376に変換しようとしています。これは、Excelでセル形式オプションを数値として使用できます。シェルスクリプトでこれを行うにはどうすればよいですか?
答え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年の日付システム」Microsoft; 1900年1月1日以降の日付は1で始まりますが、間違って1900年はうるう年(実際の時間より一日長い)だったと思います。
式は最初にdate +%s
これをUnix時間(1970/01/01以降の秒)に変換し、それを1日の秒数(86400)で割り、次に1900/01/01から1970/01/までの日数を加算します。 01(25569)は、上記のシステムを使用して事前に計算されます。
これは、GNUの日付を他のシステム/言語に適用することは、読者の練習問題として残していると仮定します。