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


Le 1er novembre ..

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

Cela aurait du sens si nous commençons par 0, mais il semble que nous ne le faisons pas

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

Qu'est-ce que je manque s'il vous plait?

Author: JAM, 2012-11-01

6 answers

Mois dans le calendrier Java sont 0-indexé. Calendrier.JANVIER n'est pas un" champ", vous ne devriez donc pas le transmettre à la méthode" get".

 19
Author: Chris, 2012-11-01 16:18:53

Comme d'autres ont dit Calendrier.LE MOIS renvoie int et est indexé à zéro.

Pour obtenir le mois en cours en tant que String utiliser SimpleDateFormat.format() méthode

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

returns NOV
 13
Author: PermGenError, 2012-11-01 16:24:20
Calendar.getInstance().get(Calendar.MONTH);

Est basé sur zéro, 10 est Novembre. Du javadoc;

MOIS int final statique public 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 calendrier Grégorien et les calendriers julien est JANVIER qui est 0; le dernier dépend de la 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 est la même que ERA, vous êtes effectivement en appel;

Calendar.getInstance().get(Calendar.ERA);
 11
Author: Qwerky, 2012-11-01 16:22:12

Calendar.get prend comme argument un de la norme Calendrier des champs, comme YEAR ou MONTH pas un nom de mois.

Calendar.JANUARY est 0, qui est aussi la valeur de Calendar.ERA, donc Calendar.getInstance().get(0) retournera l'ère, dans ce cas Calendar.AD, qui est 1.

Pour la première partie de votre question, notez que, comme cela est extrêmement documenté, les mois commencent à 0, donc 10 est en fait novembre.

 3
Author: Florent Guillaume, 2012-11-01 16:19:00
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
Author: Vishvajeet Pal, 2015-10-20 03:20:36

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

 0
Author: Tushar, 2016-10-18 06:58:24