Java LocalDate类是不可变的,这意味着一旦创建实例,就无法修改它。LocalDate提供了许多有用的方法来操作和查询日期,例如添加或减去天、月或年,获取星期几,或检查一个日期是否在另一个日期之前或之后。

本地日期示例

让我们从一个简单的示例开始,该示例为当前日期创建一个LocalDate实例并将其打印到控制台:
import java.time.LocalDate;

public class LocalDateExample {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now();
        System.out.println("Today's date: " + today);
    }
}
在此示例中,我们从java.time包中 导入LocalDate类,并使用静态now()方法创建一个名为Today的新LocalDate实例。此方法返回一个LocalDate对象,表示基于默认时区的系统时钟的当前日期。然后,我们使用System.out对象的println()方法将当前日期打印到控制台。输出将如下所示:

输出

今天的日期:2023-05-01

本地日期构造函数

除了now()方法之外,LocalDate还提供了几个其他构造函数,允许您从不同的源创建LocalDate实例。例如,您可以根据特定的年、月、日 创建LocalDate :
import java.time.LocalDate;

public class LocalDateConstructorExample {
    public static void main(String[] args) {
        LocalDate date1 = LocalDate.of(2023, 5, 1);

        System.out.println("Date 1: " + date1);
    }
}
此代码创建一个名为date1的 新LocalDate实例,其中包含 2023 年、5 月(由值 5 表示)和第 1 天。输出将为:

输出

日期 1: 2023-05-01

本地日期操作

LocalDate最有用的功能之一是操作日期的能力。例如,您可以使用plusminus方法添加或减去天、月或年:
import java.time.LocalDate;

public class LocalDateManipulationExample {
    public static void main(String[] args) {

        LocalDate date3 = LocalDate.parse("2023-05-01");
        LocalDate date4 = date3.plusDays(1);
        LocalDate date5 = date3.minusMonths(1);
        LocalDate date6 = date3.plusYears(1);

        System.out.println("Date 3: " + date3);
        System.out.println("Date 4: " + date4);
        System.out.println("Date 5: " + date5);
        System.out.println("Date 6: " + date6);
   }
}
在此示例中,我们首先通过解析字符串“2023-05-01”来创建一个名为date3的新LocalDate实例。然后,我们通过在date3中添加或减去天、月或年来创建三个名为date4date5date6的新LocalDate实例。输出将是:
日期 3: 2023-05-01 日期 4: 2023-05-02 日期 5: 2023-04-01 日期 6: 2024-05-01

比较本地日期

LocalDate还提供了比较日期的方法。您可以使用equals()isBefore()isAfter()方法 检查两个LocalDate实例是否相等,或者一个实例是否在另一个实例之前或之后:
import java.time.LocalDate;

public class LocalDateCompareExample {
    public static void main(String[] args) {
        LocalDate date1 = LocalDate.parse("2023-05-01");
        LocalDate date2 = LocalDate.parse("2023-05-02");

        System.out.println("Are the dates equal? " + date1.equals(date2));
        System.out.println("Is date1 before date2? " + date1.isBefore(date2));
        System.out.println("Is date2 after date1? " + date2.isAfter(date1));
    }
}
在此示例中,我们创建两个名为date1date2的LocalDate实例,然后使用equals()isBefore()isAfter()方法对它们进行比较。输出将为布尔形式,即truefalse
日期相等吗?false date1 是否在 date2 之前?true date2 是否在 date1 之后?真的

本地日期时间

如果需要表示日期和时间,可以使用LocalDateTime类,该类与LocalDate类似,但包含时间组件。LocalDateTime提供了操作和查询日期和时间部分的方法。以下是创建LocalDateTime实例的示例:
import java.time.LocalDateTime;

public class LocalDateTimeExample {
    public static void main(String[] args) {
        LocalDateTime datetime = LocalDateTime.now();
        System.out.println("Current date and time: " + datetime);
    }
}
此代码导入LocalDateTime类并使用now()方法创建一个名为datetime的新实例。输出将如下所示:
当前日期和时间:2023-05-01T15:30:00.123456789
注意:输出中的“T”表示时间戳的开始。

结论

Java LocalDate类对于在 Java 中处理日期非常有用。它提供了许多操作和查询日期的方法,可以轻松添加或减去天、月或年,检查一个日期是否在另一个日期之前或之后等等。如果您需要同时处理日期和时间,则可以使用LocalDateTime类。请随意尝试本课程并与我们分享您的结果!每当您感到困难时,请回到这篇文章。快乐编码!