Date.now()
, согласно документации, должен возвращать метку времени Unix или время эпохи, то есть количество миллисекунды, прошедших с 1 января 1970 года.
Текущая отметка времени unix согласно этому веб-сайту (или любым другим допустимым средствам вычисления) составляет приблизительно 1554637184. Обратите внимание, что в этом значении 10 цифр. Это значение на самом деле в миллисекундах.
Однако значение, возвращаемое Date.now()
во всех трех браузерах — Chrome 73, Firefox 66.0.2 и Edge 17.17134 — равно 1554637694364, что, по наблюдениям, состоит из 13 цифр, и поэтому я делаю вывод, что это число микросекунды, которое истекли с 1 января 1970 г.
В чем дело?
Я только что понял это после многих лет использования, потому что только что отлаживал код, который сделал проверку, которая не удалась:
let endTime = ...; // a time later than now expressed as a unix timestamp
let now = Date.now();
if (endTime <= now) {
// And it always came here, and that led me to this discovery
...
}
@ChaosPandion Он сообщает об этом значении в трех браузерах, которые я тестирую: Firefox, Chrome и Edge. Я обновил вопрос с номерами версий.
This value is actually in milliseconds.
нет, это секунды, в соответствии с любой документацией, которую вы хотите прочитать о временной метке unix ... I infer it is the number of microseconds
вы делаете неверный вывод ... они были 1554637694364ms
с 1970 года
Простой расчет вручную показывает, что 1554637694364 мс — это примерно 49 лет. Что звучит почти правильно.
49,26349577800594 года, если быть точным @mbojko :p
Текущее время эпохи (временная метка UNIX), 1554637856
— это число секунды с 01-01-1970, а не миллисекунды.
Date.now()
возвращает время эпохи в миллисекунды, поэтому вам нужно
if (endTime <= now / 1000) {
...
Спасибо за устранение путаницы. Это мелочь, которую я мог перепутать со временем. Еще несколько минут, пока я не смогу отметить ваш ответ.
На момент написания этой статьи время в секундах с эпохи UNIX составляет около 1 554 637 931
. Итак, время в миллисекундах — время JavaScript — составляет около 1 554 637 931 654
.
С начала эпохи прошло около 1,55 гигасекунды. Ваши временные метки JavaScript на самом деле составляют миллисекунды.
Что это за реализация JavaScript?