LocalDate和LocalDateTime是Java 8引入的不带时区的日期时间类,分别表示年月日和年月日时分秒,适用于生日、订单时间等场景,提供now()、of()、plus/minus、isBefore/isAfter等方法支持创建、计算和比较操作,通过ChronoUnit可计算日期间隔,配合DateTimeFormatter实现格式化输出,与Date可通过Instant转换,二者均为不可变对象,推荐替代Date和Calendar使用。

Java 8 引入了新的日期时间 API,位于 java.time 包中,其中 LocalDate 和 LocalDateTime 是最常用的类之一。它们用于处理不带时区的日期和日期时间,使用起来简洁且线程安全。
LocalDate 表示一个年月日的组合,比如 2025-04-05,不包含时间或时区信息。适合记录生日、节假日等纯日期场景。
常用方法:示例:
<font face="Courier New,Courier,monospace">LocalDate today = LocalDate.now(); System.out.println(today); // 输出:2025-04-05 LocalDate birthday = LocalDate.of(1990, 5, 20); boolean isAfter = today.isAfter(birthday); // 判断是否在某个日期之后</font>
LocalDateTime 包含年月日时分秒,精确到纳秒,但依然不带时区。适用于记录事件发生的具体时间点,如订单创建时间。
立即学习“Java免费学习笔记(深入)”;
常用方法:示例:
<font face="Courier New,Courier,monospace">LocalDateTime now = LocalDateTime.now();
System.out.println(now); // 输出:2025-04-05T10:15:30.123
LocalDateTime meeting = LocalDateTime.of(2025, 4, 10, 9, 0);
String formatted = meeting.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm"));
System.out.println(formatted); // 输出:2025年04月10日 09:00</font>这两个类都支持直接比较和时间段操作。
<font face="Courier New,Courier,monospace">LocalDate start = LocalDate.of(2025, 1, 1); LocalDate end = LocalDate.of(2025, 12, 31); long daysBetween = ChronoUnit.DAYS.between(start, end); // 364</font>
如果需要与 Date 或 Calendar 交互,可以通过 Instant 中转。
new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()
Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant())
基本上就这些。LocalDate 和 LocalDateTime 设计清晰,操作直观,推荐在所有新项目中使用它们替代 Date 和 Calendar。注意它们是不可变对象,每次修改都会返回新实例。
以上就是如何使用Java的LocalDate与LocalDateTime类的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号