일을 날짜로 변환

일을 날짜로 변환

Linux에서 일수를 0000-00-00에서 날짜로 변환하는 방법을 묻고 싶습니다.

(참고: 저는 에서 보았습니다.신기원변환기변환될 수 있다는 것입니다. 예를 들어, 737887은 2020년 4월 7일로 변환됩니다. 즉, 0000-00-00과 오늘(2020년 4월 7일 화요일) 사이에 737887일이 있습니다.

답변1

많은 시스템에서는 에포크(1970-01-01) 이후의 날짜로 작업하는 것이 가장 좋습니다.

따라서 0000-00-00과 1970-01-01 사이의 일수를 일정하게 유지할 수 있으며 이는 정확히 719528입니다. 그런 다음 에포크 이후의 일수로 합산합니다.

echo $(( 719528 + $(date --utc --date "$1" +%s)/86400 ))

답변2

Perl DateTime 모듈은 다음과 같은 작업에 적합합니다.

$ perl -MDateTime -E '
    $base = DateTime->new(year=>0, month=>1, day=>1);
    $now = DateTime->now;
    say $now->delta_days($base)->in_units("days");
'
737887

관련 정보