Java LocalDate withMonth Methode

JavaJavaBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Die LocalDate-Klasse in Java8 bietet mehrere Methoden, um Datumswerte zu manipulieren. Eine solche Methode ist withMonth(), die eine neue LocalDate-Instanz zurückgibt, nachdem der Monat des Jahres geändert oder festgelegt wurde.

Erstellen einer LocalDate-Instanz

Der erste Schritt besteht darin, eine LocalDate-Instanz in Java zu erstellen. Die LocalDate-Klasse befindet sich im Paket java.time, daher werden wir das Paket am Anfang unserer Code-Datei einfügen. Die LocalDate-Klasse bietet eine of()-Methode, mit der eine neue LocalDate-Instanz erstellt werden kann.

import java.time.LocalDate;

public class LocalDateWithMonthMethodExample {
    public static void main(String[] args) {
        // Erstellen einer neuen LocalDate-Instanz
        LocalDate date = LocalDate.of(2022, 10, 12);

        // Ausgabe des ursprünglichen Datums
        System.out.println("Original Date: " + date);
    }
}

Verwenden Sie den folgenden Befehl, um den Code in der Konsole zu kompilieren und auszuführen:

javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample

Verwendung der withMonth()-Methode

Die withMonth()-Methode gibt eine neue LocalDate-Instanz zurück, bei der der Monat des Jahres auf den als Argument übergebenen Wert gesetzt ist.

Wir können einen anderen Monat des Jahres mit der withMonth()-Methode setzen und ein neu erstelltes Datum erhalten. Hier setzen wir den Monat des Jahres auf 4 und erhalten das neue Datum.

// Setzen des Monats des Jahres auf 4 und erhalten des neuen Datums
LocalDate newDate = date.withMonth(4);

// Ausgabe des neuen Datums
System.out.println("New Date: " + newDate);

Hier ist der vollständige Code:

import java.time.LocalDate;

public class LocalDateWithMonthMethodExample {
    public static void main(String[] args) {
        // Erstellen einer neuen LocalDate-Instanz
        LocalDate date = LocalDate.of(2022, 10, 12);

        // Ausgabe des ursprünglichen Datums
        System.out.println("Original Date: " + date);

        // Setzen des Monats des Jahres auf 4 und erhalten des neuen Datums
        LocalDate newDate = date.withMonth(4);

        // Ausgabe des neuen Datums
        System.out.println("New Date: " + newDate);
    }
}

Verwenden Sie den folgenden Befehl, um den Code in der Konsole zu kompilieren und auszuführen:

javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample

Es sollten die folgenden Ausgabe angezeigt werden:

Original Date: 2022-10-12
New Date: 2022-04-12

Umgang mit ungültigen Monatswerten

Wenn der Monatswert, der an die withMonth()-Methode übergeben wird, ungültig ist, d.h. außerhalb des Bereichs [1, 12], wird eine DateTimeException geworfen.

Hier ist ein Beispiel, das zeigt, wie Sie einen ungültigen Monatswert behandeln können.

import java.time.DateTimeException;
import java.time.LocalDate;

public class LocalDateWithMonthMethodExample {
    public static void main(String[] args) {
        // Erstellen einer neuen LocalDate-Instanz
        LocalDate date = LocalDate.of(2022, 10, 12);

        // Ausgabe des ursprünglichen Datums
        System.out.println("Original Date: " + date);

        try {
            // Versuch, einen ungültigen Monatswert (13) festzulegen
            LocalDate newDate = date.withMonth(13);

            // Ausgabe des neuen Datums
            System.out.println("New Date: " + newDate);
        } catch(DateTimeException ex) {
            System.out.println("Ungültiger Monatswert angegeben: " + ex.getMessage());
        }
    }
}

Verwenden Sie den folgenden Befehl, um den Code in der Konsole zu kompilieren und auszuführen:

javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample

Es sollten die folgenden Ausgabe angezeigt werden:

Original Date: 2022-10-12
Ungültiger Monatswert angegeben: Invalid value for MonthOfYear (valid values 1 - 12): 13

Ändern des Monats des Jahres in der ursprünglichen Datumsinstanz

Die withMonth()-Methode gibt eine neue LocalDate-Instanz zurück, bei der der Wert des Monats des Jahres auf den neuen Wert gesetzt ist, und sie ändert die ursprüngliche Datumsinstanz nicht. Wenn Sie den Wert des Monats des Jahres in der ursprünglichen Datei ändern möchten, müssen Sie den von withMonth() zurückgegebenen Wert der ursprünglichen Datumsinstanz zuweisen, wie folgt:

// Ändern des Monats des Jahres in der ursprünglichen Datumsinstanz
date = date.withMonth(11);

// Ausgabe des aktualisierten Datums
System.out.println("Updated Date: " + date);

Hier ist der vollständige Code:

import java.time.LocalDate;

public class LocalDateWithMonthMethodExample {
    public static void main(String[] args) {
        // Erstellen einer neuen LocalDate-Instanz
        LocalDate date = LocalDate.of(2022, 10, 12);

        // Ausgabe des ursprünglichen Datums
        System.out.println("Original Date: " + date);

        // Setzen des Monats des Jahres auf 5 und erhalten des neuen Datums
        LocalDate newDate = date.withMonth(5);

        // Ausgabe des neuen Datums
        System.out.println("New Date: " + newDate);

        // Ändern des Monats des Jahres in der ursprünglichen Datumsinstanz
        date = date.withMonth(11);

        // Ausgabe des aktualisierten Datums
        System.out.println("Updated Date: " + date);
    }
}

Verwenden Sie den folgenden Befehl, um den Code in der Konsole zu kompilieren und auszuführen:

javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample

Es sollten die folgenden Ausgabe angezeigt werden:

Original Date: 2022-10-12
New Date: 2022-05-12
Updated Date: 2022-11-12

Umgang mit einem ungültigen Tagswert

Wenn der Tag des Monats für das Jahr ungültig ist, wenn der Monat geändert wird, wird er auf den letzten gültigen Tag des neuen Monats 更改为最后一个有效日期。例如,如果我们在闰年将年份的月份从 2 月更改为 4 月,日期值将自动调整为 4 月的最后一个有效日期。

// Erstellen einer neuen LocalDate-Instanz
LocalDate date = LocalDate.of(2024, 2, 29);

// Ausgabe des ursprünglichen Datums
System.out.println("Original Date: " + date);

// Setzen des Monats des Jahres auf April
LocalDate newDate = date.withMonth(4);

// Ausgabe des neuen Datums
System.out.println("New Date: " + newDate);

Hier ist der vollständige Code:

import java.time.LocalDate;

public class LocalDateWithMonthMethodExample {
    public static void main(String[] args) {
        // Erstellen einer neuen LocalDate-Instanz
        LocalDate date = LocalDate.of(2024, 2, 29);

        // Ausgabe des ursprünglichen Datums
        System.out.println("Original Date: " + date);

        // Setzen des Monats des Jahres auf April
        LocalDate newDate = date.withMonth(4);

        // Ausgabe des neuen Datums
        System.out.println("New Date: " + newDate);
    }
}

Verwenden Sie den folgenden Befehl, um den Code in der Konsole zu kompilieren und auszuführen:

javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample

Es sollten die folgenden Ausgabe angezeigt werden:

Original Date: 2024-02-29
New Date: 2024-04-30

Verwendung der withMonth()-Methode in einer Schleife

Wir können die withMonth()-Methode in einer Schleife verwenden, um eine Liste von Datumswerten mit unterschiedlichen Monaten des Jahres zu generieren. Hier ist ein Beispiel, das Datumswerte für jeden Monat des Jahres 2022 generiert:

// Generieren von Datumswerten für jeden Monat des Jahres 2022
for (int month = 1; month <= 12; month++) {
    LocalDate date = LocalDate.of(2022, month, 1);
    System.out.println("Date for " + date.getMonth() + ": " + date);
}

Hier ist der vollständige Code:

import java.time.LocalDate;

public class LocalDateWithMonthMethodExample {
    public static void main(String[] args) {
        // Generieren von Datumswerten für jeden Monat des Jahres 2022
        for (int month = 1; month <= 12; month++) {
            LocalDate date = LocalDate.of(2022, month, 1);
            System.out.println("Date for " + date.getMonth() + ": " + date);
        }
    }
}

Verwenden Sie den folgenden Befehl, um den Code in der Konsole zu kompilieren und auszuführen:

javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample

Es sollten die folgenden Ausgabe angezeigt werden:

Date for JANUARY: 2022-01-01
Date for FEBRUARY: 2022-02-01
Date for MARCH: 2022-03-01
Date for APRIL: 2022-04-01
Date for MAY: 2022-05-01
Date for JUNE: 2022-06-01
Date for JULY: 2022-07-01
Date for AUGUST: 2022-08-01
Date for SEPTEMBER: 2022-09-01
Date for OCTOBER: 2022-10-01
Date for NOVEMBER: 2022-11-01
Date for DECEMBER: 2022-12-01

Verwendung der getMonthValue()-Methode

Die getMonthValue()-Methode wird verwendet, um den Wert des Monats des Jahres eines Datums abzurufen. Hier ist ein Beispiel, das zeigt, wie man die withMonth()- und getMonthValue()-Methoden verwendet, um den Wert des Monats des Jahres eines Datums zu ändern und abzurufen:

// Erstellen einer neuen LocalDate-Instanz
LocalDate date = LocalDate.of(2022, 11, 15);

// Ausgabe des ursprünglichen Datums
System.out.println("Original Date: " + date);

// Abrufen des Monats-Werts
int originalMonthValue = date.getMonthValue();

// Ändern des Monats des Jahres auf 10
date = date.withMonth(10);

// Abrufen des neuen Monats-Werts
int newMonthValue = date.getMonthValue();

// Ausgabe des aktualisierten Datums und der Monats-Werte
System.out.println("Updated Date: " + date);
System.out.println("Original Month Value: " + originalMonthValue);
System.out.println("New Month Value: " + newMonthValue);

Hier ist der vollständige Code:

import java.time.LocalDate;

public class LocalDateWithMonthMethodExample {
    public static void main(String[] args) {
        // Erstellen einer neuen LocalDate-Instanz
        LocalDate date = LocalDate.of(2022, 11, 15);

        // Ausgabe des ursprünglichen Datums
        System.out.println("Original Date: " + date);

        // Abrufen des Monats-Werts
        int originalMonthValue = date.getMonthValue();

        // Ändern des Monats des Jahres auf 10
        date = date.withMonth(10);

        // Abrufen des neuen Monats-Werts
        int newMonthValue = date.getMonthValue();

        // Ausgabe des aktualisierten Datums und der Monats-Werte
        System.out.println("Updated Date: " + date);
        System.out.println("Original Month Value: " + originalMonthValue);
        System.out.println("New Month Value: " + newMonthValue);
    }
}

Verwenden Sie den folgenden Befehl, um den Code in der Konsole zu kompilieren und auszuführen:

javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample

Es sollten die folgenden Ausgabe angezeigt werden:

Original Date: 2022-11-15
Updated Date: 2022-10-15
Original Month Value: 11
New Month Value: 10

Zusammenfassung

In diesem Lab haben Sie gelernt, wie die withMonth()-Methode verwendet wird, um eine Kopie einer LocalDate-Instanz zu erstellen, bei der der Monat des Jahres auf einen neuen Wert gesetzt ist. Sie haben auch gelernt, wie ungültige Monatswerte behandelt werden und wie die getMonthValue()-Methode verwendet wird, um den Wert des Monats des Jahres einer LocalDate-Instanz abzurufen. Die withMonth()-Methode ist ein nützliches Werkzeug zur Manipulation von Daten und kann auf viele verschiedene Weise verwendet werden, einschließlich der Generierung einer Liste von Daten für jeden Monat des Jahres.