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?
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".
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
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);
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.
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);
}
}
Utilisez Calendar.getInstance().get(Calendar.MONTH)+1
pour obtenir le mois en cours.