Как получить минимальную и максимальную дату

Как получить самую маленькую и самую большую дату. Я вижу, что наименьшее число можно получить следующим образом:

Number.MIN_VALUE

Дата не имеет этого. Есть ли способ найти самую маленькую и самую большую дату

Ответ 1

Дата не имеет этого

Собственно, это происходит, но только косвенно. В соответствии с спецификацией значение <миллисекунды Date объекта milliseconds-after-the-Epoch может быть только в диапазоне от -8640000000000000 до 8640000000000000.

Итак, минимальная дата new Date(-8640000000000000) (Tue, 20 апреля -271821 00:00:00 GMT), а максимальная дата new Date(8640000000000000) (сб, 13 сен 275760 00:00:00 GMT).

Если вы хотите, вы можете поместить их в функцию Date как свойства:

Date.MIN_VALUE = new Date(-8640000000000000);
Date.MAX_VALUE = new Date(8640000000000000);

... но так как экземпляры Date изменяются, я, вероятно, не буду, потому что слишком легко случайно изменить один из них. Альтернативой было бы это сделать:

Object.defineProperties(Date, {
    MIN_VALUE: {
      value: -8640000000000000 // A number, not a date
    },
    MAX_VALUE: {
      value: 8640000000000000
    }
});

Определяет свойства на Date, которые нельзя изменить, которые имеют минимальное/максимальное числовое значение для дат. (На движке JavaScript, поддерживающем ES5.)