Java Gregoriancalendar Что я делаю не так? Неправильная дата?
-
05-10-2019 - |
Вопрос
Здравствуйте, у меня проблема с Грегорианкалендаром.
Что там не так?
Как результат 2010/6/1 и не 2010/05/31?
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 июля.
Toadd к тому, что вышеуказанные ответы, поскольку в июне в июне нет 31 день, календарь способствует этому следующему действительному дню, потому что Calendar.setleNient. верно по умолчанию.
Не связан с StackOverflow