Автоматична корекция на дати в JavaScript
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 година
Описната корекция работи и в по-малката
посока. Както знаете, най-минималният
ден от месеца е денят с номер 1.
Затова, ако се укаже ден с номер 0,
ще се получи последният ден от предходния месец:
let date = new Date(2018, 1, 0); // указваме нулев ден
console.log(date); // ще се получи 31 януари
Може също така да се указват отрицателни стойности
на дни и месеци. При това трябва да се помни, че
минималният ден има номер 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 година
Всичко казано по-горе аналогично работи с часове, минути и секунди:
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, 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); // коя дата ще бъде?
Определете в коя дата JavaScript ще преобразува следващия момент от време:
let date = new Date(2018, 5, 0);
console.log(date); // коя дата ще бъде?
Определете в коя дата JavaScript ще преобразува следващия момент от време:
let date = new Date(2018, 0, 0);
console.log(date); // коя дата ще бъде?
Определете в коя дата JavaScript ще преобразува следващия момент от време:
let date = new Date(2018, -12, -33);
console.log(date); // коя дата ще бъде?
Определете в коя дата 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); // коя дата ще бъде?