Подтвердить что ты не робот

Несоответствие метода даты Javascript - getDate vs getMonth

Это вызвало у меня головную боль прошлой ночью, и я хотел понять, почему метод getDate в объекте Date основан на 1 (возвращает значения от 1-31), в то время как метод getMonth равен 0 (возвращает 0-11), Мне интересно, почему существует такая несогласованность в методах для одного и того же объекта.

Я понимаю, почему сейчас сложно изменить поведение, но есть ли причины, по которым это было разработано в первую очередь?

Документацию можно найти здесь: http://www.w3schools.com/jsref/jsref_obj_date.asp

4b9b3361

Ответ 2

Итак, я бросил Brendan Eich в твиттере, задав ему вопрос (для тех, кто не знает, что он является создателем JS), и его ответ был:

@magrangs, потому что это так, как это сделал java.util.Date.

https://twitter.com/BrendanEich/status/179610205317902337

Ответ 3

Трудно сказать, но у меня есть подозрение, что месяц основан на 0, поэтому его можно легко использовать в качестве индексатора в массиве месяцев, который содержит имена месяцев

var months = new ["Jan", "Feb", ....]
months[new Date().getMonth()];

Ответ 4

В JavaScript счетчики начинаются с нуля.

Месяцы необязательно должны быть представлены цифрой. "Месяцы" - это счетная последовательность. Первый элемент этой последовательности относится к нулю.

В реальной жизни дни представляются фиксированной цифрой. Хотя дни также являются счетными, было бы крайне запутанно представлять первый день как День Ноль.