날짜/시간을 율리우스력 날짜(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))