2013-06-26 5 views
0

Я хочу получить, сколько месяца получили дни. У меня этот код:День месяца - календарь java

Calendar cal = Calendar.getInstance(); 
    cal.set(2013, 1, 1); 
    System.out.println(cal.getActualMaximum(cal.DAY_OF_MONTH)); 

Januar в 2013 году (и другие либо еще yaers :)) уже получили 31 дней, но я все еще получаю 28, вы знаете, где я получил ошибку? Спасибо.

ответ

7

Первый месяц года в григорианском и юлианском календарях - ЯНВАРЬ, который равен 0; последнее зависит от количества месяцев в году. Вы получаете максимальные дни за февраль.

Попробуйте cal.set(2013, 0, 1);

+0

О, спасибо. Это забавно. Я не понимаю эту идею :) – user1628407

+0

рад, что я мог бы помочь! Java и нулевая нумерация ... – sunrize920

+1

принимают ответы, если они решают вашу проблему. Это заставит людей хотеть ответить на ваши вопросы в будущем и покажет любому более позднему пользователю, что это правильный ответ. – sunrize920

0

Если вы хотите, чтобы получить количество дней в январе 2013 года

попробовать

cal.set(2013,0,1); 
2

@ sunrize920 пятно на. Чтобы избежать ошибок, я считаю, что использовать максимально доступные значения Calender. Так что в вашем желаемом случае это будет:

cal.set(2013, Calendar.JANUARY, 1); 

Намного проще, и сохраняет запоминание отсчитывает ли календарных месяцев от 0 или 1 ...

+0

Да, но когда у меня есть месяцы в цифрах, лучше знать, что это от нуля, а затем используя это. Но в других случаях это хорошая идея :) – user1628407

+0

Возможно - наверняка лучше не помнить об этом! почему числа в вашем коде в течение нескольких месяцев? Почему бы просто не использовать 'Calendar.JANUARY',' Calendar.FEBRUARY' ...? –

Смежные вопросы