Java Language
Calendrier et ses sous-classes
Recherche…
Remarques
Depuis Java 8, Calendar
et ses sous-classes ont été remplacés par le package java.time et ses sous-packages. Ils devraient être préférés, sauf si une API héritée nécessite un calendrier.
Création d'objets de calendrier
Calendar
objets de Calendar
peuvent être créés en utilisant getInstance()
ou en utilisant le constructeur GregorianCalendar
.
Il est important de noter que les mois dans Calendar
sont à zéro, ce qui signifie que JANUARY est représenté par une valeur int
0. Afin de fournir un meilleur code, utilisez toujours des constantes de Calendar
, telles que Calendar.JANUARY
pour éviter les malentendus.
Calendar calendar = Calendar.getInstance();
Calendar gregorianCalendar = new GregorianCalendar();
Calendar gregorianCalendarAtSpecificDay = new GregorianCalendar(2016, Calendar.JANUARY, 1);
Calendar gregorianCalendarAtSpecificDayAndTime = new GregorianCalendar(2016, Calendar.JANUARY, 1, 6, 55, 10);
Remarque : utilisez toujours les constantes de mois: La représentation numérique est trompeuse , par exemple Calendar.JANUARY
a la valeur 0
Champs de calendrier croissants / décroissants
add()
et roll()
peuvent être utilisés pour augmenter / diminuer les champs du Calendar
.
Calendar calendar = new GregorianCalendar(2016, Calendar.MARCH, 31); // 31 March 2016
La méthode add()
affecte tous les champs et se comporte efficacement si l'on ajoutait ou soustrait des dates réelles du calendrier.
calendar.add(Calendar.MONTH, -6);
L'opération ci-dessus supprime six mois du calendrier, ce qui nous ramène au 30 septembre 2015.
Pour changer un champ particulier sans affecter les autres champs, utilisez roll()
.
calendar.roll(Calendar.MONTH, -6);
L'opération ci-dessus supprime six mois du mois en cours , le mois est donc identifié en septembre. Aucun autre champ n'a été ajusté; l'année n'a pas changé avec cette opération.
Trouver AM / PM
Avec la classe Calendrier, il est facile de trouver AM ou PM.
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
if (cal.get(Calendar.AM_PM) == Calendar.PM)
System.out.println("It is PM");
Retrait des calendriers
Pour obtenir une différence entre deux Calendar
, utilisez la méthode getTimeInMillis()
:
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c2.set(Calendar.DATE, c2.get(Calendar.DATE) + 1);
System.out.println(c2.getTimeInMillis() - c1.getTimeInMillis()); //outputs 86400000 (24 * 60 * 60 * 1000)