日付/時刻を現在のJDNに変換

日付/時刻を現在のJDNに変換

日付/時刻をユリウス暦日(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))

関連情報