Беспорядок в календаре - PullRequest
1 голос
/ 10 января 2012

Я играл с классом Calendar и получил несколько запутанных результатов:

    Calendar thisCal = Calendar.getInstance();
    thisCal.clear();

    thisCal.set(2012,12,8);

    System.out.println("Year is: " + thisCal.get(Calendar.YEAR));
    System.out.println("Month is: " + thisCal.get(Calendar.MONTH));
    System.out.println("Day of Month is: " + thisCal.get(Calendar.DAY_OF_MONTH));

Вывод:

Год: 2013

Месяц: 0

День месяца: 8

Я в замешательстве!

Ответы [ 3 ]

6 голосов
/ 10 января 2012

Поле MONTH основано на нуле (я думаю, унаследовано от некоторого API POSIX). Таким образом, вы устанавливаете его на 13-й месяц 2012 года, который интерпретируется как первый месяц (с номером 0) 2013 года.

Если установить для свойства lenient значение false, вместо этого будет выдано исключение.

2 голосов
/ 10 января 2012

Месячная нумерация начинается с 0. Подробнее здесь.

1 голос
/ 10 января 2012

Пожалуйста, ознакомьтесь с документацией API календаря.

Месяц начинается с нуля.

Поэтому, если вы установите 12 в качестве месяца, это на самом деле "13-й месяц", который вызывает«странный» результат

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...