LocalDate.atTime() 是将 LocalDate 与时间结合生成 LocalDateTime 的方法,不涉及时区,提供四种重载:atTime(时,分)、atTime(时,分,秒)、atTime(时,分,秒,纳秒)、atTime(LocalTime),仅机械拼接,不校验夏令时。

在 Java 中,LocalDate.atTime() 是将一个纯日期(LocalDate)与时间信息结合,生成 LocalDateTime 的最直接方式。它本身不涉及时区,结果始终是“本地”日期时间。
atTime() 的三种常用重载形式
该方法提供多个重载版本,方便你灵活传入时间信息:
-
localDate.atTime(int hour, int minute)—— 指定小时和分钟,秒和纳秒默认为 0 -
localDate.atTime(int hour, int minute, int second)—— 可指定到秒,纳秒仍为 0 -
localDate.atTime(int hour, int minute, int second, int nanoOfSecond)—— 精确到纳秒 - 还可传入
LocalTime对象:localDate.atTime(localTime)
基础用法示例
假设你有一个日期 2024-06-15,想把它变成当天上午 9 点 30 分的时间点:
LocalDate date = LocalDate.of(2024, 6, 15); LocalDateTime dateTime = date.atTime(9, 30); // → 2024-06-15T09:30
这等价于:
立即学习“Java免费学习笔记(深入)”;
LocalTime time = LocalTime.of(9, 30); LocalDateTime dateTime = date.atTime(time);
注意:它不会自动处理无效时间
atTime() 不校验夏令时跳变或不存在的时间(如某些地区在切换夏令时时会跳过 2:00–3:00)。它只是机械拼接——只要传入的 LocalTime 合法(例如 25:00 会抛 DateTimeException),就一定返回有效的 LocalDateTime。若需考虑时区与夏令时逻辑,应改用 ZonedDateTime 或 OffsetDateTime 配合 ZoneId。
常见误区提醒
- 不是转换时区:它不接受时区参数,也不改变任何时区含义
-
不等于 now() + 时间偏移:它不依赖系统当前时间,完全基于你给的
LocalDate和时间值 -
返回的是不可变对象:
LocalDateTime是 final 类,所有操作都返回新实例


















