Диапазон использования даты с точностью до микросекунды в JavaScript - PullRequest
0 голосов
/ 12 июня 2019

Если бы я сохранил дату как серийный номер , например, в javascript, дата "2014-01-01" будет сохранена как 41640., "2014-01-01 12:00:00" будет сохранена как 41640.5 и т. Д..

Если бы мы допустили точность в микросекундах (а не точность в миллисекундах, как в текущем объекте даты Javascript), какой будет наибольшая дата, которая может быть сохранена с использованием числа javascript?

1 Ответ

2 голосов
/ 12 июня 2019

В день 24 *3600* 10 ^ 6 мсек, и для точного хранения этого значения 86400000000 = 0x141DD76000 необходимо 37 бит.

В мантиссе 52 + 1 бит. Таким образом, у вас осталось 16 бит для кодирования дня. Это позволяет кодировать ~ 2 ^ 16/365 = 179 лет и 201 день. Поскольку эта цифра составляет около 1900 года, мы также должны учитывать високосные годы: 24 (1900-1999) +20 (2000-2079) = 48 високосных лет.

Поскольку ссылка указана точно 30 декабря 1899 года, предел кодирования достигается 30 декабря 2178 + (201-48) дней, что соответствует 2 июня 2079 года.

После этого кодирование будет продолжаться с потерей точности и не будет точным в микросекунду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...