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

Привет у меня есть проблема с 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));
    }

}
6
задан pasuna 31 May 2010 в 13:08
поделиться

2 ответа

Java считает месяцы от 0, поэтому 5 - это июнь. Всегда безопаснее использовать константы. Поэтому я бы написал:

Calendar cal = new GregorianCalendar(2010, Calendar.MAY, 31);

То же самое относится и к распечатке календаря. Если вы сделаете cal.get(Calendar.MONTH), то получите 6, что означает ИЮЛЬ.

10
ответ дан 9 December 2019 в 20:40
поделиться

Это происходит потому, что номер месяца основан на нуле, поэтому вы пытаетесь установить 31 июня, но в июне всего 30 дней, поэтому он преобразуется в 1 июля.

1
ответ дан 9 December 2019 в 20:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: