При инициализации нового Date
объект в JavaScript с помощью ниже вызова, я узнал что количества аргумента месяца, начинающие с нуля.
new Date(2010, 3, 1); // that's the 1st April 2010!
Почему аргумент месяца запускается от 0? С другой стороны, день аргумента месяца (длятся один) является числом от 1 до 31. Есть ли серьезные основания для этого?
Это старая (возможно, неудачная, возможно, умирающая) традиция в мире программирования, см. старый стандарт (POSIX) localtime функции Си http://linux.die.net/man/3/localtime
То же самое и в java .. Возможно для преобразования int в строку (0 - jan ,, 1-feb), они закодированы таким образом .. потому что они могут иметь массив строк (проиндексированных с 0) названий месяцев и этих номеров месяцев, если они начинаются с 0, будет намного проще сопоставить строки месяцев ..
{{ 1}}В году всегда 12 месяцев, поэтому в ранних реализациях языка Си мог использоваться статический массив фиксированной ширины с индексами 0...11.
Все, кроме дня месяца, основано на 0, см. здесь полный список, включая диапазоны :)
На самом деле, дни, основанные на 1, являются странными... как ни странно. Почему это было сделано? Я не знаю... но, вероятно, это произошло на том же собрании, где они получили пилюлю и решили, что точка с запятой необязательна.