LocalTime专用于处理不含日期和时区的纯时间,轻量、不可变、线程安全;常用LocalTime.now()获取当前时间,支持指定Clock;提供getHour()等getter方法提取数值;支持plusHours()等时间运算及isBefore()等比较;可parse()解析字符串、format()格式化输出。

Java 中 LocalTime 专用于处理“纯时间”(不含日期和时区),比如记录会议开始时刻、闹钟设定、日志时间戳等。它轻量、不可变、线程安全,是 Java 8 日期时间 API 的核心类之一。
怎么获取当前时间
最常用方式就是调用静态方法 LocalTime.now(),它基于系统默认时区的当前时间获取小时、分钟、秒和纳秒:
-
LocalTime now = LocalTime.now();→ 如输出15:18:22.345678901(对应当前真实时间) - 若需指定时钟源(例如测试中使用固定时间),可用
LocalTime.now(Clock clock)
怎么提取小时、分钟、秒等具体数值
LocalTime 提供了清晰直观的 getter 方法,直接返回 int 类型值,无需解析或计算:
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
-
int hour = now.getHour();→ 返回 0–23(24 小时制) -
int minute = now.getMinute();→ 返回 0–59 -
int second = now.getSecond();→ 返回 0–59 -
int nano = now.getNano();→ 返回 0–999,999,999(纳秒部分)
怎么做时间运算与比较
LocalTime 支持加减时间量,并可直接比较先后顺序,所有操作均返回新对象(原对象不变):
立即学习“Java免费学习笔记(深入)”;
- 加减:如
now.plusHours(2)、now.minusMinutes(15)、now.plus(Duration.ofSeconds(30)) - 比较:
now.isBefore(LocalTime.of(12, 0))、now.isAfter(LocalTime.NOON)、now.equals(LocalTime.of(15, 18)) - 边界值:可直接使用常量,如
LocalTime.MIDNIGHT(00:00)、LocalTime.NOON(12:00)
怎么从字符串解析或格式化输出
默认支持 ISO-8601 格式(HH:mm:ss 或 HH:mm:ss.SSS),也可自定义格式器:
- 解析:
LocalTime.parse("15:18")、LocalTime.parse("15:18:22.123", DateTimeFormatter.ofPattern("HH:mm:ss.SSS")) - 格式化:
now.format(DateTimeFormatter.ofPattern("HH:mm"))→ 输出"15:18" - 注意:不推荐用
toString()做展示,因含纳秒且格式固定;应统一用DateTimeFormatter

















