JavaScript имеет очень интересную и полезную
особенность: если при создании объекта Date
был указан некорректный момент времени -
он автоматически будет пересчитан в корректный.
Давайте посмотрим на примере.
Как вы знаете, даты 35
января не существует.
Максимально возможный день января - 31
.
Получается, что наша дата 35
января
имеет 4
лишних дня. JavaScript в таком
случае просто прибавит эти лишние 4
дня к следующему месяцу:
let date = new Date(2018, 0, 35);
console.log(date); // получится 4 февраля
Можно указывать не только лишние дни, но
и месяцы. При этом следует помнить, что месяцы
начинаются с нуля, а значит последний корректный
месяц - 11
-тый. Если указать 12
-тый
месяц, то получится январь следующего года:
let date = new Date(2018, 12, 1); // указываем 12-тый месяц
console.log(date); // получится 1 января 2019 года
Определите, в какую дату JavaScript преобразует следующий момент времени:
let date = new Date(2018, 1, 35);
console.log(date); // какая дата будет?
Определите, в какую дату JavaScript преобразует следующий момент времени:
let date = new Date(2018, 15, 1);
console.log(date); // какая дата будет?
Определите, в какую дату JavaScript преобразует следующий момент времени:
let date = new Date(2018, 3, 31);
console.log(date); // какая дата будет?
Определите, в какую дату JavaScript преобразует следующий момент времени:
let date = new Date(2018, 1, 31);
console.log(date); // какая дата будет?
Определите, в какую дату JavaScript преобразует следующий момент времени:
let date = new Date(2018, 12, 33);
console.log(date); // какая дата будет?
Определите, в какую дату JavaScript преобразует следующий момент времени:
let date = new Date(2018, 33, 33);
console.log(date); // какая дата будет?
Нулевой день
Описанная корректировка работает и в меньшую
сторону. Как вы знаете, самым минимальным
днем месяца является день с номером 1
.
Поэтому, если указать день с номером 0
,
то получится последний день предыдущего месяца:
let date = new Date(2018, 1, 0); // указываем нулевой день
console.log(date); // получится 31 января
Определите, в какую дату JavaScript преобразует следующий момент времени:
let date = new Date(2018, 5, 0);
console.log(date); // какая дата будет?
Определите, в какую дату JavaScript преобразует следующий момент времени:
let date = new Date(2018, 0, 0);
console.log(date); // какая дата будет?
Отрицательные значения
Можно также указывать отрицательные значения
дней и месяцев. При этом нужно помнить, что
минимальный день имеет номер 1
, а
минимальный месяц - номер 0
. Это значит,
что минус первый день попадает во 2
день с конца предыдущего месяца, а минус
первый месяц попадает просто в последний
месяц предыдущего года:
let date = new Date(2018, 1, -1); // указываем -1 день
console.log(date); // получится 30 января
let date = new Date(2018, -1, 1); // указываем -1 месяц
console.log(date); // получится 1 декабря 2017 года
Определите, в какую дату JavaScript преобразует следующий момент времени:
let date = new Date(2018, -12, -33);
console.log(date); // какая дата будет?
Часы, минуты, секунды
Все сказанное выше аналогично работает с часами, минутами и секундами:
let date = new Date(2018, 0, 1, 24, 0, 0); // указываем 24-тый час
console.log(date); // получится 2 января, 0 часов
let date = new Date(2018, 0, 1, 25, 0, 0); // указываем 25-тый час
console.log(date); // получится 2 января, 1 час
Определите, в какую дату JavaScript преобразует следующий момент времени:
let date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // какая дата будет?
Определите, в какую дату JavaScript преобразует следующий момент времени:
let date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // какая дата будет?
Определите, в какую дату JavaScript преобразует следующий момент времени:
let date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // какая дата будет?