Почему аргумент месяца колеблется от 0 до 11 в Конструкторе Date JavaScript?

При инициализации нового Date объект в JavaScript с помощью ниже вызова, я узнал что количества аргумента месяца, начинающие с нуля.

new Date(2010, 3, 1);  // that's the 1st April 2010!

Почему аргумент месяца запускается от 0? С другой стороны, день аргумента месяца (длятся один) является числом от 1 до 31. Есть ли серьезные основания для этого?

104
задан Agnel Kurian 31 March 2010 в 11:34
поделиться

4 ответа

Это старая (возможно, неудачная, возможно, умирающая) традиция в мире программирования, см. старый стандарт (POSIX) localtime функции Си http://linux.die.net/man/3/localtime

48
ответ дан 24 November 2019 в 04:11
поделиться

То же самое и в java .. Возможно для преобразования int в строку (0 - jan ,, 1-feb), они закодированы таким образом .. потому что они могут иметь массив строк (проиндексированных с 0) названий месяцев и этих номеров месяцев, если они начинаются с 0, будет намного проще сопоставить строки месяцев ..

{{ 1}}
3
ответ дан 24 November 2019 в 04:11
поделиться

В году всегда 12 месяцев, поэтому в ранних реализациях языка Си мог использоваться статический массив фиксированной ширины с индексами 0...11.

4
ответ дан 24 November 2019 в 04:11
поделиться

Все, кроме дня месяца, основано на 0, см. здесь полный список, включая диапазоны :)

На самом деле, дни, основанные на 1, являются странными... как ни странно. Почему это было сделано? Я не знаю... но, вероятно, это произошло на том же собрании, где они получили пилюлю и решили, что точка с запятой необязательна.

28
ответ дан 24 November 2019 в 04:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: