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

Java 8 引入了新的日期时间 API,位于 java.time 包中,其中 LocalDate 和 LocalDateTime 是最常用的类之一。它们用于处理不带时区的日期和日期时间,使用起来简洁且线程安全。
LocalDate:只表示日期
LocalDate 表示一个年月日的组合,比如 2025-04-05,不包含时间或时区信息。适合记录生日、节假日等纯日期场景。
常用方法:LocalDate.now():获取当前系统日期 LocalDate.of(2025, 4, 5):创建指定年月日的日期 date.plusDays(3):增加3天(返回新对象) date.minusMonths(1):减去一个月 date.getDayOfWeek():获取星期几(如 MONDAY) date.getYear():获取年份
示例:
LocalDate today = LocalDate.now();System.out.println(today); // 输出:2025-04-05LocalDate birthday = LocalDate.of(1990, 5, 20);boolean isAfter = today.isAfter(birthday); // 判断是否在某个日期之后
LocalDateTime:表示日期+时间
LocalDateTime 包含年月日时分秒,精确到纳秒,但依然不带时区。适用于记录事件发生的具体时间点,如订单创建时间。
立即学习“Java免费学习笔记(深入)”;
常用方法: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”)):格式化输出
示例:
LocalDateTime now = LocalDateTime.now();System.out.println(now); // 输出:2025-04-05T10:15:30.123LocalDateTime 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
日期比较与计算
这两个类都支持直接比较和时间段操作。
isBefore()、isAfter()、isEqual() 可用于判断日期前后关系 使用 ChronoUnit 计算间隔,例如:
LocalDate start = LocalDate.of(2025, 1, 1);LocalDate end = LocalDate.of(2025, 12, 31);long daysBetween = ChronoUnit.DAYS.between(start, end); // 364
与旧日期类型的转换
如果需要与 Date 或 Calendar 交互,可以通过 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类的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/200242.html
微信扫一扫
支付宝扫一扫