Date

將日期/時間轉換為目前 JDN

  • February 8, 2019

我想將日期/時間轉換為儒略日期(自公元前 4713 年 1 月 1 日以來的天數,而不是 YY-ddd 形式,其中 ddd 是當年的天數)。這似乎不是 gnudate 內置的,但我懷疑使用dateand的正確咒語很容易bc

我希望能夠從 shell 提示符或通過 bash 函式執行此操作,而不必安裝一些額外的包。Gnu-date 和標準工具,如 sed awk bc

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 

如果您只對 GNU date 支持的日期感興趣,您可以讓它吐出自 1970-01-01 以來的秒數。Unix 時間每天使用固定的秒數(閏秒已被平滑),因此您只需除以 86400 即可將該秒數轉換為天數。要將其轉換為儒略日數,請添加必要的固定抵消。

echo $(($(TZ=GMT+12 date +%s -d "now") / 86400 + 2440587))

引用自:https://unix.stackexchange.com/questions/289176