Я пытаюсь преобразовать переменную в Perl, которая содержит миллисекунды, в формат даты / времени.
Уловка в том, что переменная пришла из мэйнфрейма TIMESTAMP, который не может быть преобразован Unix / Linux, потому что продолжительность, если я не ошибаюсь, начинается в 1900-01-01 00:00:00.
Заранее спасибо.
Perl:
my $milli_secs = ((hex(unpack('H*', substr($updt_time,0,3))) * 1099511627776) +
(hex(unpack('H*', substr($updt_time,3,3))) * 65536) +
(hex(unpack('H*', substr($updt_time,6,2)))));
$milli_secs = $milli_secs / 16;
$milli_secs = ($milli_secs * 3.90625) / 1000000;
print "$milli_secs\n";
my $tp = DateTime->from_epoch( epoch => $milli_secs );
print "Date ==> $tp\n";
Результат:
+3747753982164,99
Дата ==> 120731-08-07T04: 49: 24
Мои переменные:
Метка времени EBCDIC: D508FF8D00000000
С некоторыми расчетами я имею:
Нано секунд: 3.74775398216499e + 18
Миллисекунды: 3747753982164,99
Что должно дать мне (я думаю):
2018-10-05 18: 46: 22,1