날짜/시간을 현재 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 시간은 하루에 고정된 초 수를 사용하므로(윤초는 평활화됨) 86400으로 나누면 초 수를 일 수로 변환할 수 있습니다. 이를 율리우스력 일수로 변환하려면 필요한 고정 오프셋을 추가하세요.

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

관련 정보