Урок: отличить Invalid Date от допустимой метки ноль
Объект Date может существовать, но хранить недопустимое время. В этом уроке вы проверите состояние до форматирования и не перепутаете корректную начальную точку эпохи с ошибкой.
Назначение
Объект Date может существовать, но хранить недопустимое время. В этом уроке вы проверите состояние до форматирования и не перепутаете корректную начальную точку эпохи с ошибкой.
Как это работает
GetTime возвращает NaN для недопустимой даты. Проверяйте это явно через Number.isNaN, прежде чем вызывать toISOString. Пример работает с фиксированными строками и не зависит от локального формата ввода.
Пример
const inputs = ["1970-01-01T00:00:00Z", "2026-06-15T12:00:00Z", "invalid"];
for (const input of inputs) {
const date = new Date(input);
const stamp = date.getTime();
console.log(Number.isNaN(stamp) ? "Дата недопустима" : date.toISOString());
}
Что должно получиться
Первые две даты форматируются, третья даёт понятное сообщение. Нулевая метка первой даты не отклоняется только потому, что число 0 ложно в логическом условии.
Граница применения и частая ошибка
Успешный разбор не гарантирует соответствие прикладному диапазону, например разрешённому году. Некоторые числовые компоненты могут нормализоваться. Не полагайтесь на неоднозначные строки вроде 01/02/03 при обмене данными между системами.
Самостоятельная проверка
Добавьте проверку допустимого диапазона годов отдельно от проверки NaN. Затем вызовите toISOString для заведомо недопустимой даты в try/catch и изучите ошибку. Зафиксируйте формат входных данных в контракте.