web-dev-qa-db-fra.com

Calendrier Java, obtention de la valeur du mois en cours, clarification nécessaire

Le 1er novembre ..

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

Il serait logique de commencer par 0, mais il semble que nous ne le faisons pas

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

Qu'est-ce qui me manque, s'il vous plaît? 

10
JAM

Les mois du calendrier Java sont indexés par 0. Calendar.JANUARY n'est pas un champ vous ne devriez donc pas le transmettre à la méthode get.

23
Chris

comme d'autres l'ont dit Calendar.MONTH renvoie int et est indexé à zéro.

pour obtenir le mois en cours en tant que méthode String, utilisez SimpleDateFormat.format()

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

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

est basé sur zéro, le 10 novembre. Du javadoc;

public statique final int MONTH Numéro de champ pour get et set indiquant le mois. C'est un valeur spécifique au calendrier. Le premier mois de l'année dans le grégorien et les calendriers Julian sont JANVIER, qui vaut 0; le dernier dépend du nombre de mois dans une année.

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

n’est pas une chose sensée à faire, la valeur de JANUARY est 0, ce qui correspond à ERA, vous appelez effectivement;

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

Calendar.get prend comme argument l'un des champs de calendrier standard, comme YEAR ou MONTH et non un nom de mois.

Calendar.JANUARY est égal à 0, ce qui correspond également à la valeur de Calendar.ERA, de sorte que Calendar.getInstance().get(0) renvoie l'ère, dans ce cas Calendar.AD, qui est 1.

Pour la première partie de votre question, notez que, comme il est largement documenté, les mois commencent à 0, donc 10 correspond en fait à novembre.

3
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

Utilisez Calendar.getInstance().get(Calendar.MONTH)+1 pour obtenir le mois en cours.

0
Tushar