Méthode withMonth de LocalDate Java

JavaJavaBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java/BasicSyntaxGroup -.-> java/for_loop("For Loop") java/BasicSyntaxGroup -.-> java/output("Output") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/packages_api("Packages / API") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/date("Date") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/exceptions("Exceptions") java/SystemandDataProcessingGroup -.-> java/object_methods("Object Methods") subgraph Lab Skills java/for_loop -.-> lab-117862{{"Méthode withMonth de LocalDate Java"}} java/output -.-> lab-117862{{"Méthode withMonth de LocalDate Java"}} java/classes_objects -.-> lab-117862{{"Méthode withMonth de LocalDate Java"}} java/packages_api -.-> lab-117862{{"Méthode withMonth de LocalDate Java"}} java/date -.-> lab-117862{{"Méthode withMonth de LocalDate Java"}} java/exceptions -.-> lab-117862{{"Méthode withMonth de LocalDate Java"}} java/object_methods -.-> lab-117862{{"Méthode withMonth de LocalDate Java"}} end

Création d'une instance de LocalDate

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

Utilisation de la méthode withMonth()

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

Gestion des valeurs de mois invalides

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

Changement de la valeur du mois de l'année dans l'instance de date d'origine

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

Gestion d'une valeur de jour invalide

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

Utilisation de la méthode withMonth() dans une boucle

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

Utilisation de la méthode getMonthValue()

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

Récapitulatif

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.