it-swarm.com.ru

Календарь Java, получение значения текущего месяца, требуется уточнение

1 ноября ..

  Calendar.getInstance().get(Calendar.MONTH); // prints 10 (October)

Это имеет смысл, если мы начнем с 0, но, похоже, мы не

  Calendar.getInstance().get(Calendar.JANUARY); // prints 1

Что мне не хватает, пожалуйста? 

10
JAM

Месяцы в Java-календаре индексируются 0. Calendar.JANUARY не является полем поэтому вы не должны передавать его в метод get.

23
Chris

как говорили другие, Calendar.MONTH возвращает int и индексируется нулем.

чтобы получить текущий месяц как String, используйте метод SimpleDateFormat.format()

Calendar cal = Calendar.getInstance();
System.out.println(new SimpleDateFormat("MMM").format(cal.getTime()));

returns NOV
14
PermGenError
Calendar.getInstance().get(Calendar.MONTH);

ноль, 10 ноября. От Javadoc;

public static final int MONTH Номер поля для получения и установки с указанием месяца. Это календарное значение. Первый месяц года на григорианском языке и юлианские календари - ЯНВАРЬ, который равен 0; последнее зависит от количество месяцев в году.

Calendar.getInstance().get(Calendar.JANUARY);

это не разумно, значение JANUARY равно 0, что совпадает с ERA, который вы фактически вызываете;

Calendar.getInstance().get(Calendar.ERA);
12
Qwerky

Calendar.get принимает в качестве аргумента одно из стандартных полей календаря, например YEAR или MONTH, а не название месяца.

Calendar.JANUARY равен 0, что также является значением Calendar.ERA, поэтому Calendar.getInstance().get(0) вернет эпоху, в данном случае Calendar.AD, которая равна 1.

Для первой части вашего вопроса, обратите внимание, что, как дико задокументировано, месяцы начинаются с 0, поэтому 10 на самом деле ноябрь.

3
Florent Guillaume
import Java.util.*;

class GetCurrentmonth
{
    public static void main(String args[])
    {
        int month;
        GregorianCalendar date = new GregorianCalendar();      
        month = date.get(Calendar.MONTH);
        month = month+1;
        System.out.println("Current month is  " + month);
    }
}
2
Vishvajeet Pal

Используйте Calendar.getInstance().get(Calendar.MONTH)+1, чтобы получить текущий месяц.

0
Tushar