localtime 是 java 8 引入的不可变类,用于表示不带日期和时区的纯时间(如“14:30:45.123”),支持创建、字段提取、加减运算、比较及格式化等操作。

LocalTime 是 Java 8 引入的 java.time 包中的不可变类,专门用于表示**不带日期和时区的纯时间(时:分:秒.纳秒)**,比如“14:30:45.123”。它适合处理营业时间、倒计时、时间间隔计算等场景。
创建 LocalTime 实例
有多种常用方式获取当前或指定时间:
-
当前系统时间:
LocalTime.now()(基于默认时区的系统时钟) -
指定时分秒:
LocalTime.of(9, 30)→ 09:30:00;LocalTime.of(15, 45, 20, 500_000_000)→ 15:45:20.5 -
解析字符串:
LocalTime.parse("13:25:10")(默认格式HH:mm:ss);支持自定义格式:LocalTime.parse("13|25|10", DateTimeFormatter.ofPattern("HH|mm|ss")) -
从 Instant 转换(需指定时区):
Instant.now().atZone(ZoneId.systemDefault()).toLocalTime()
获取与提取时间字段
LocalTime 提供了直观的方法读取各时间单位:
-
getHour()→ 返回 0–23 的小时值 -
getMinute()→ 返回 0–59 的分钟值 -
getSecond()→ 返回 0–59 的秒值 -
getNano()→ 返回 0–999,999,999 的纳秒值 -
toSecondOfDay()→ 当天第几秒(0–86399)
时间运算与比较
LocalTime 支持加减时间量、判断先后关系,所有操作返回新对象(原对象不变):
-
加减时间:
localTime.plusHours(2)、localTime.minusMinutes(15)、localTime.plus(Duration.ofSeconds(30)) -
比较大小:
time1.isBefore(time2)、time1.isAfter(time2)、time1.equals(time2) -
判断是否在区间内(需手动逻辑):
!time.isBefore(start) && !time.isAfter(end)
格式化与转换
输出为字符串或转成其他类型:
-
默认格式化:
localTime.toString()→ 如"09:15:30.123" -
自定义格式:
localTime.format(DateTimeFormatter.ofPattern("HH:mm"))→"09:15" -
转为字符串再解析需注意:避免用
SimpleDateFormat(已过时),始终用DateTimeFormatter - 不能直接转为 Date 或 Calendar:如需,须结合日期(如 LocalDate)构造 LocalDateTime,再转为旧 API
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











