Автоматична корекција на датуми во 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); // кој датум ќе биде?