Привет у меня есть проблема с GregorianCalendar.
Что не так там?
Как результатом является 01.06.2010 и не 31.05.2010?
package test;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Main {
public static void main(String[] args) {
Calendar cal = new GregorianCalendar(2010, 5, 31);
System.out.println(cal.get(Calendar.YEAR) + "/" + cal.get(Calendar.MONTH) + "/" + cal.get(Calendar.DAY_OF_MONTH));
}
}
Java считает месяцы от 0, поэтому 5 - это июнь. Всегда безопаснее использовать константы. Поэтому я бы написал:
Calendar cal = new GregorianCalendar(2010, Calendar.MAY, 31);
То же самое относится и к распечатке календаря. Если вы сделаете cal.get(Calendar.MONTH)
, то получите 6, что означает ИЮЛЬ.
Это происходит потому, что номер месяца основан на нуле, поэтому вы пытаетесь установить 31 июня, но в июне всего 30 дней, поэтому он преобразуется в 1 июля.