Конвертировать дни в дату

Конвертировать дни в дату

Я хочу спросить, как преобразовать количество дней из 0000-00-00 в дату в Linux?

(Примечание: я видел изepochconverterчто его можно преобразовать. Например, 737887 преобразуется в 7 апреля 2020 года, то есть между 0000-00-00 и сегодняшним днем ​​(вторник, 07 апреля 2020 года) есть 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

Связанный контент