Java Gregoriancalendar Что я делаю не так? Неправильная дата?

StackOverflow https://stackoverflow.com/questions/2943716

Вопрос

Здравствуйте, у меня проблема с Грегорианкалендаром.

Что там не так?

Как результат 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. верно по умолчанию.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top