Introduction
La classe LocalDate
dans Java8 fournit de multiples méthodes pour manipuler des valeurs de date. Une de ces méthodes est withMonth()
, qui renvoie une nouvelle instance de LocalDate
après avoir changé ou défini le mois de l'année.
💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici
La classe LocalDate
dans Java8 fournit de multiples méthodes pour manipuler des valeurs de date. Une de ces méthodes est withMonth()
, qui renvoie une nouvelle instance de LocalDate
après avoir changé ou défini le mois de l'année.
La première étape consiste à créer une instance de LocalDate
en Java. La classe LocalDate
se trouve dans le package java.time, donc nous inclurons le package au début de notre fichier de code. La classe LocalDate
fournit une méthode of()
qui peut créer une nouvelle instance de LocalDate
.
import java.time.LocalDate;
public class LocalDateWithMonthMethodExample {
public static void main(String[] args) {
// création d'une nouvelle instance de LocalDate
LocalDate date = LocalDate.of(2022, 10, 12);
// affichage de la date d'origine
System.out.println("Date d'origine : " + date);
}
}
Utilisez la commande suivante pour compiler et exécuter le code dans le terminal :
javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample
La méthode withMonth()
renvoie une nouvelle instance de LocalDate
avec le mois de l'année défini sur la valeur fournie en argument.
Nous pouvons définir un mois de l'année différent en utilisant la méthode withMonth()
et obtenir une date nouvellement créée. Ici, nous définissons le mois de l'année sur 4 et obtenons la nouvelle date.
// définition du mois de l'année sur 4 et obtention de la nouvelle date
LocalDate newDate = date.withMonth(4);
// affichage de la nouvelle date
System.out.println("Nouvelle Date : " + newDate);
Voici le code complet :
import java.time.LocalDate;
public class LocalDateWithMonthMethodExample {
public static void main(String[] args) {
// création d'une nouvelle instance de LocalDate
LocalDate date = LocalDate.of(2022, 10, 12);
// affichage de la date d'origine
System.out.println("Date d'origine : " + date);
// définition du mois de l'année sur 4 et obtention de la nouvelle date
LocalDate newDate = date.withMonth(4);
// affichage de la nouvelle date
System.out.println("Nouvelle Date : " + newDate);
}
}
Utilisez la commande suivante pour compiler et exécuter le code dans le terminal :
javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample
Vous devriez voir la sortie suivante :
Date d'origine : 2022-10-12
Nouvelle Date : 2022-04-12
Si la valeur de mois passée à la méthode withMonth()
est invalide, c'est-à-dire en dehors de la plage [1, 12], elle jettera une DateTimeException
.
Voici un exemple qui montre comment vous pouvez gérer une valeur de mois invalide.
import java.time.DateTimeException;
import java.time.LocalDate;
public class LocalDateWithMonthMethodExample {
public static void main(String[] args) {
// création d'une nouvelle instance de LocalDate
LocalDate date = LocalDate.of(2022, 10, 12);
// affichage de la date d'origine
System.out.println("Date d'origine : " + date);
try {
// tentative de définir une valeur de mois invalide (13)
LocalDate newDate = date.withMonth(13);
// affichage de la nouvelle date
System.out.println("Nouvelle Date : " + newDate);
} catch(DateTimeException ex) {
System.out.println("Valeur de mois invalide fournie : " + ex.getMessage());
}
}
}
Utilisez la commande suivante pour compiler et exécuter le code dans le terminal :
javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample
Vous devriez voir la sortie suivante :
Date d'origine : 2022-10-12
Valeur de mois invalide fournie : Valeur invalide pour MonthOfYear (valeurs valides 1 - 12) : 13
La méthode withMonth()
renvoie une nouvelle instance de LocalDate
avec la valeur du mois de l'année définie sur la nouvelle valeur, et elle ne modifie pas l'instance de date d'origine. Si vous voulez modifier la valeur du mois de l'année dans la date d'origine, vous devez assigner la valeur renvoyée par withMonth()
à l'instance de date d'origine, comme ceci :
// changement de la valeur du mois de l'année dans l'instance de date d'origine
date = date.withMonth(11);
// affichage de la date mise à jour
System.out.println("Date mise à jour : " + date);
Voici le code complet :
import java.time.LocalDate;
public class LocalDateWithMonthMethodExample {
public static void main(String[] args) {
// création d'une nouvelle instance de LocalDate
LocalDate date = LocalDate.of(2022, 10, 12);
// affichage de la date d'origine
System.out.println("Date d'origine : " + date);
// définition du mois de l'année sur 5 et obtention de la nouvelle date
LocalDate newDate = date.withMonth(5);
// affichage de la nouvelle date
System.out.println("Nouvelle Date : " + newDate);
// changement de la valeur du mois de l'année dans l'instance de date d'origine
date = date.withMonth(11);
// affichage de la date mise à jour
System.out.println("Date mise à jour : " + date);
}
}
Utilisez la commande suivante pour compiler et exécuter le code dans le terminal :
javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample
Vous devriez voir la sortie suivante :
Date d'origine : 2022-10-12
Nouvelle Date : 2022-05-12
Date mise à jour : 2022-11-12
Si le jour du mois est invalide pour l'année lors du changement de mois, il sera changé pour le dernier jour valide du nouveau mois. Par exemple, si nous changeons le mois de l'année de février à avril en une année bissextile, la valeur du jour sera automatiquement ajustée au dernier jour valide d'avril.
// création d'une nouvelle instance de LocalDate
LocalDate date = LocalDate.of(2024, 2, 29);
// affichage de la date d'origine
System.out.println("Date d'origine : " + date);
// définition du mois de l'année sur avril
LocalDate newDate = date.withMonth(4);
// affichage de la nouvelle date
System.out.println("Nouvelle Date : " + newDate);
Voici le code complet :
import java.time.LocalDate;
public class LocalDateWithMonthMethodExample {
public static void main(String[] args) {
// création d'une nouvelle instance de LocalDate
LocalDate date = LocalDate.of(2024, 2, 29);
// affichage de la date d'origine
System.out.println("Date d'origine : " + date);
// définition du mois de l'année sur avril
LocalDate newDate = date.withMonth(4);
// affichage de la nouvelle date
System.out.println("Nouvelle Date : " + newDate);
}
}
Utilisez la commande suivante pour compiler et exécuter le code dans le terminal :
javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample
Vous devriez voir la sortie suivante :
Date d'origine : 2024-02-29
Nouvelle Date : 2024-04-30
Nous pouvons utiliser la méthode withMonth()
dans une boucle pour générer une liste de dates avec différentes valeurs de mois de l'année. Voici un exemple qui génère des dates pour chaque mois de l'année 2022 :
// génération de dates pour chaque mois de l'année 2022
for (int month = 1; month <= 12; month++) {
LocalDate date = LocalDate.of(2022, month, 1);
System.out.println("Date pour " + date.getMonth() + ": " + date);
}
Voici le code complet :
import java.time.LocalDate;
public class LocalDateWithMonthMethodExample {
public static void main(String[] args) {
// génération de dates pour chaque mois de l'année 2022
for (int month = 1; month <= 12; month++) {
LocalDate date = LocalDate.of(2022, month, 1);
System.out.println("Date pour " + date.getMonth() + ": " + date);
}
}
}
Utilisez la commande suivante pour compiler et exécuter le code dans le terminal :
javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample
Vous devriez voir la sortie suivante :
Date pour JANVIER: 2022-01-01
Date pour FÉVRIER: 2022-02-01
Date pour MARS: 2022-03-01
Date pour AVRIL: 2022-04-01
Date pour MAI: 2022-05-01
Date pour JUIN: 2022-06-01
Date pour JUILLET: 2022-07-01
Date pour AOÛT: 2022-08-01
Date pour SEPTEMBRE: 2022-09-01
Date pour OCTOBRE: 2022-10-01
Date pour NOVEMBRE: 2022-11-01
Date pour DÉCEMBRE: 2022-12-01
La méthode getMonthValue()
est utilisée pour obtenir la valeur du mois de l'année d'une date. Voici un exemple qui montre comment utiliser les méthodes withMonth()
et getMonthValue()
pour changer et obtenir la valeur du mois de l'année d'une date :
// création d'une nouvelle instance de LocalDate
LocalDate date = LocalDate.of(2022, 11, 15);
// affichage de la date d'origine
System.out.println("Date d'origine : " + date);
// obtention de la valeur du mois de l'année
int originalMonthValue = date.getMonthValue();
// changement du mois de l'année en 10
date = date.withMonth(10);
// obtention de la nouvelle valeur du mois de l'année
int newMonthValue = date.getMonthValue();
// affichage de la date et des valeurs de mois mises à jour
System.out.println("Date mise à jour : " + date);
System.out.println("Valeur du mois d'origine : " + originalMonthValue);
System.out.println("Nouvelle valeur du mois : " + newMonthValue);
Voici le code complet :
import java.time.LocalDate;
public class LocalDateWithMonthMethodExample {
public static void main(String[] args) {
// création d'une nouvelle instance de LocalDate
LocalDate date = LocalDate.of(2022, 11, 15);
// affichage de la date d'origine
System.out.println("Date d'origine : " + date);
// obtention de la valeur du mois de l'année
int originalMonthValue = date.getMonthValue();
// changement du mois de l'année en 10
date = date.withMonth(10);
// obtention de la nouvelle valeur du mois de l'année
int newMonthValue = date.getMonthValue();
// affichage de la date et des valeurs de mois mises à jour
System.out.println("Date mise à jour : " + date);
System.out.println("Valeur du mois d'origine : " + originalMonthValue);
System.out.println("Nouvelle valeur du mois : " + newMonthValue);
}
}
Utilisez la commande suivante pour compiler et exécuter le code dans le terminal :
javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample
Vous devriez voir la sortie suivante :
Date d'origine : 2022-11-15
Date mise à jour : 2022-10-15
Valeur du mois d'origine : 11
Nouvelle valeur du mois : 10
Dans ce laboratoire, vous avez appris à utiliser la méthode withMonth()
pour créer une copie d'une instance de LocalDate
avec la valeur du mois de l'année définie sur une nouvelle valeur. Vous avez également appris à gérer les valeurs de mois invalides et à utiliser la méthode getMonthValue()
pour obtenir la valeur du mois de l'année d'une instance de LocalDate
. La méthode withMonth()
est un outil pratique pour manipuler les dates et peut être utilisée de nombreuses manières différentes, notamment pour générer une liste de dates pour chaque mois de l'année.