在Java中LocalDate和LocalDateTime如何使用_Java新日期API解析-java教程

LocalDate仅含年月日,LocalDateTime含年月日及时分秒,二者均无时区、不可变、线程安全;用途不同:生日等纯日期用LocalDate,订单时间等需精确到秒用LocalDateTime。

LocalDate 和 LocalDateTime 的核心区别在哪

LocalDate 只表示年月日,不带时分秒和时区;LocalDateTime 是年月日 + 时分秒,依然不含时区信息。两者都不可变、线程安全,但用途截然不同:处理生日、合同生效日这类纯日期场景用 LocalDate;记录订单创建时间、日志打点等需要精确到秒的场景必须用 LocalDateTime。

常见错误是把数据库里带时间的 TIMESTAMP 字段映射成 LocalDate,结果小时分钟全丢,读出来的日期可能错一天(比如存的是 2024-05-01 23:59:59,转成 LocalDate 就变成 2024-05-01,再转回带时间类型可能默认变成当天零点)。

怎么从字符串正确解析这两种类型

不能直接用 parse() 方法硬解任意格式字符串——它只认 ISO 标准格式(LocalDate.parse("2024-05-01")、LocalDateTime.parse("2024-05-01T14:30:45"))。遇到中文格式如 "2024年05月01日" 或带空格的 "2024-05-01 14:30:45",必须显式传入 DateTimeFormatter:

LocalDate date = LocalDate.parse("2024年05月01日", DateTimeFormatter.ofPattern("yyyy年MM月dd日"));
LocalDateTime dt = LocalDateTime.parse("2024-05-01 14:30:45", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

注意:DateTimeFormatter 不是线程安全的,别在类字段里复用未加锁的静态 formatter 实例;推荐用 static final 声明,或改用 DateTimeFormatter.ofPattern(...) 每次新建(JDK8+ 对常用 pattern 有缓存,开销不大)。

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

和数据库交互时该选哪个类型

JDBC 4.2+ 规范支持直接绑定 LocalDate 和 LocalDateTime 到 PreparedStatement:

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » 在Java中LocalDate和LocalDateTime如何使用_Java新日期API解析-java教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1394+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4047496+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1394+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4047496+
  • 本周更新: 0+
  • 最后更新: 2026-03-16