ベクトル数字5桁を日付形式に変換する方法

ベクトル数字5桁を日付形式に変換する方法

シェルスクリプトで日付形式(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の日付を他のシステム/言語に適用することは、読者の練習問題として残していると仮定します。

おすすめ記事