localdatetime.tolocaltime() 直接提取时间部分返回新的 localtime 实例,不修改原对象、不受时区影响,仅结构切片,不可逆,优于手动拼装。

LocalDateTime.toLocalTime() 方法直接提取时间部分,返回一个 LocalTime 对象,不修改原值,也不受时区影响。
基本用法:调用 toLocalTime() 即可
LocalDateTime 包含日期和时间,toLocalTime() 是其内置方法,作用就是剥离日期字段,只保留时、分、秒、纳秒。
- 原对象保持不变(LocalDateTime 是不可变类型)
- 返回的是新的 LocalTime 实例,比如
14:30:45.123 - 无需额外参数或格式化操作
常见使用示例
例如:
LocalDateTime dt = LocalDateTime.of(2024, 5, 20, 14, 30, 45, 123_000_000); LocalTime time = dt.toLocalTime(); // 得到 14:30:45.123
也可以链式调用,比如配合格式化:
String formatted = dt.toLocalTime().format(DateTimeFormatter.ofPattern("HH:mm:ss")); // "14:30:45"
注意点:不是转换,而是提取
这个方法不涉及时区换算,也不做任何时间推算。它只是结构上的“切片”——把 LocalDateTime 内部的时间字段复制出来,生成对应的 LocalTime。
- 如果只需要时间逻辑(如判断是否在某个营业时段),用 LocalTime 更语义清晰
- 不能反向通过 LocalTime 恢复 LocalDateTime(缺少日期信息)
- 若需带时区的时间(如 ZonedDateTime 的时间部分),应先转为对应类型再提取
替代方式(不推荐,仅作对比)
有人会尝试用 dt.getHour()、dt.getMinute() 等手动拼装 LocalTime,但没必要:
- 冗余且易出错(比如忽略纳秒)
- 不如
toLocalTime()直观、安全、高效 - Java 8+ 标准 API 已提供完备支持
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











