Разбираюсь с объектом Date в JavaScript пытаясь сделать простенький календарь. Известно что при установке даты можно использовать значения превышающие или меньше диапазона и они трансформируются в соседние значения даты. В общем, выполняю такие манипуляции в консоли:
var date = new Date();
date.setMonth(1) // -> 1518052227803
date.setDate(-2) // -> 1517188227803
date.getDate() // -> 29
date.getMonth() // -> 0
date.setMonth(1) // -> 1519865649170
date.getMonth() // -> 2
Устанавливаем февраль, а на деле получаем март. Почему так происходит?
Попробовал тоже самое только другой месяц.
var date = new Date();
date.setMonth(4) // -> 1525742238464
date.setDate(-2) // -> 1524878238464
date.getDate() // -> 28
date.getMonth() // -> 0
date.setMonth(4) // -> 1527470238464
date.getMonth() // -> 4
У меня щас 4 часа утра. Либо меня глючит, либо я чего-то не понимаю.