В контексте DateTime «эпоха» относится к Unix time , которое является количеством секунд, которые не являются високосными секундами с 1970-01-01T00: 00: 00Z.
$ perl -MDateTime -e'CORE::say DateTime->from_epoch( epoch => 1 )'
1970-01-01T00:00:01
$ perl -MDateTime -e'CORE::say DateTime->from_epoch( epoch => 1000 )'
1970-01-01T00:16:40
Однако DateTime поддерживает время с разрешением наносекунды, поэтому вы можете использовать следующее для получения метки времени JavaScript.
my $js_time = $dt->epoch * 1000 + $dt->millisecond;
Конечно, для получения значения, отличного от нуля, длякомпонент миллисекунды предполагает, что объект DateTime был создан с достаточно точным временем.Это не относится к
my $dt = DateTime->now();
, поскольку для получения текущего времени используется оператор time
.Чтобы получить метку времени с более высоким разрешением, вы можете использовать следующее:
use Time::HiRes qw( time );
my $dt = DateTime->from_epoch( epoch => time() );