Показать сообщение отдельно
  #16 (permalink)  
Старый 26.03.2019, 20:22
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Блондинка
а где истина
Истина про JavaScript записана в спецификации EcmaScript. А вы думали откуда производители браузера догадались? Они ведь явно не таким образом пишут браузер, как вы свой учебник!

Время в JavaScript представлено при помощи класса Date, экземпляры которого хранят конкретное время. Время измеряется в миллисекундах, прошедших с 1 января 1970 года. И поскольку целочисленные значения Number представлены целыми числами от -9 007 199 254 740 992 до 9 007 199 254 740 992, то этого достаточно, чтобы измерять время с миллисекундной точностью на протяжении 285 616 лет от полуночи 1 января 1970 по Гринвичу, как в будущее, так и в прошлое.

При помощи этого объекта можно представить любую зафиксированную дату из истории человечества. Однако у вас могут возникнуть вопросы:
  • Как создавать даты в промежутке между 1 г. н. э. и 99 г. н. э. включительно?
  • Почему год даты до нашей эры отличается на единицу?

Согласно спецификации EcmaScript, пункт 20.3.2.1, перегрузка конструктора класса Date, которая принимает хотя бы 2 аргумента, принимает в качестве аргументов числа, значение которых зависит от положения в списке аргументов: Date ( год, месяц [ , число [ , часы [ , минуты [ , секунды [ , миллисекунды ] ] ] ] ] ). Однако в том же разделе указано, что если год приведённый к целочисленному значению, является числом от 0 до 99, то год, представленный объектом Date, будет являться годом от 1900 до 1999 соответственно. Также в этой перегрузке второй аргумент представляет месяц, уменьшенный на 1. Также это локальное время.

alert(new Date(2015, 8, 17)); // 17 сентября 2015
alert(new Date(65, 4, 5)); // 5 мая 1965


Строковое представление принимает любую дату по Гринвичу с 1 января 1 г. н. э. по 31 декабря 9999 г. н. э. в формате YYYY-MM-DD
alert(new Date("0034-05-15")); // 15 мая 34 г. н. э.
alert(new Date("0117-01-04")); // 4 января 117 г. н. э.


Остальные даты представляются при помощи расширенного строкового представления: в виде приставки знака и двух дополнительных разрядов для представления года.

alert(new Date("-000606-10-30")); // 30 октября 607 г. до н. э.

alert(new Date("-000001-01-01")); // 1 января 2 г. до н. э.

alert(new Date("+000000-01-01")); // 1 января 1 г. до н. э.

alert(new Date("+000001-01-01")); // 1 января 1 г. н. э.

alert(new Date("+001970-01-01")); // 1 января 1970 г. н. э.

alert(new Date("+002019-03-26")); // 26 марта 2019 г. н. э.


И ещё стоит учитывать, что нулевого года не существует. После 31 декабря 1 до н. э. идёт 1 января 1 г. н. э.

Последний раз редактировалось Malleys, 26.03.2019 в 20:28.
Ответить с цитированием