首页 > Java > java教程 > 正文

如何使用Java的LocalDate与LocalDateTime类

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

如何使用java的localdate与localdatetime类

Java 8 引入了新的日期时间 API,位于 java.time 包中,其中 LocalDateLocalDateTime 是最常用的类之一。它们用于处理不带时区的日期和日期时间,使用起来简洁且线程安全。

LocalDate:只表示日期

LocalDate 表示一个年月日的组合,比如 2025-04-05,不包含时间或时区信息。适合记录生日、节假日等纯日期场景。

常用方法:
  • LocalDate.now():获取当前系统日期
  • LocalDate.of(2025, 4, 5):创建指定年月日的日期
  • date.plusDays(3):增加3天(返回新对象)
  • date.minusMonths(1):减去一个月
  • date.getDayOfWeek():获取星期几(如 MONDAY)
  • date.getYear():获取年份

示例:

<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:表示日期+时间

LocalDateTime 包含年月日时分秒,精确到纳秒,但依然不带时区。适用于记录事件发生的具体时间点,如订单创建时间。

立即学习Java免费学习笔记(深入)”;

如知AI笔记
如知AI笔记

如知笔记——支持markdown的在线笔记,支持ai智能写作、AI搜索,支持DeepseekR1满血大模型

如知AI笔记 27
查看详情 如知AI笔记
常用方法:
  • LocalDateTime.now():获取当前日期时间
  • LocalDateTime.of(2025, 4, 5, 14, 30):创建指定日期时间
  • dateTime.plusHours(2):增加2小时
  • dateTime.withMinute(0):设置分钟为0
  • dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"))格式化输出

示例:

<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>
登录后复制

日期比较与计算

这两个类都支持直接比较和时间段操作。

  • isBefore()isAfter()isEqual() 可用于判断日期前后关系
  • 使用 ChronoUnit 计算间隔,例如:
<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>
登录后复制

与旧日期类型的转换

如果需要与 DateCalendar 交互,可以通过 Instant 中转。

  • Date 转 LocalDateTime: new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()
  • LocalDateTime 转 Date: Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant())

基本上就这些。LocalDate 和 LocalDateTime 设计清晰,操作直观,推荐在所有新项目中使用它们替代 Date 和 Calendar。注意它们是不可变对象,每次修改都会返回新实例。

以上就是如何使用Java的LocalDate与LocalDateTime类的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号