
日付/時刻をユリウス暦日(YY-ddd形式ではなく紀元前4713年1月1日以降の日数、ここでdddは現在の年の日数)に変換したいと思います。これはgndateに組み込まれていないようですが、rightとincantationを使用するとdate
簡単になると思いますbc
。
追加のパッケージをインストールしなくても、シェルプロンプトまたはbash機能を使用してこれを実行できることを願っています。 Gnu-dateやsed awk bcなどの標準ツール
答え1
OLD_JULIAN_VAR=$(date -u -d 1840-12-31 +%s)
TODAY_DATE=`date --date="$odate" +"%Y-%m-%d"`
TODAY_DATE_VAR=`date -u -d "$TODAY_DATE" +"%s"`
export JULIAN_DATE=$((((TODAY_DATE_VAR - OLD_JULIAN_VAR))/86400))
echo $JULIAN_DATE
非常に正確
[(date in sec)-(1840-12-31 in sec)]/86400
答え2
GNU Date でサポートされている日付のみに興味がある場合は、1970-01-01 以降の秒数を表示することができます。 Unix時間は1日に固定された秒数を使用するため(うるう秒は平滑化されます)、86400で割ると秒数を日数に変換できます。これをユリウス暦日に変換するには、必要な固定オフセットを追加してください。
echo $(($(TZ=GMT+12 date +%s -d "now") / 86400 + 2440587))