Непонятно почему так сделали. Даты, например, передаются в формате 1-31, так что есть где запутаться.

Что еще хуже, так это то, что можно "безнаказанно" вылезти за диапазон значений. Например:
Код:
xdate = new Date(2009, 13, 33);
На самом деле число будет: 05.03.2010. Дата в Яве хранится в виде числа миллисекунд начиная с 1970 года по сей момент. Видимо операнты конструкторов лишь умножаются на разряд и побитно складываются.