日数を日付に変換する

日数を日付に変換する

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

関連情報