LocalTime.of() 是 Java 8 提供的静态工厂方法,用于根据指定时分秒及纳秒(0–999999999)创建无日期无时区的本地时间对象,参数需满足 hour(0–23)、minute(0–59)、second(0–59),越界抛 DateTimeException。

LocalTime.of() 是 Java 8 引入的 java.time 包中用于创建精确时间对象的核心静态工厂方法。它不依赖系统时钟,而是根据你传入的数值直接构造一个不含日期、不含时区的本地时间(LocalTime)实例。
掌握参数范围:避免 IllegalArgumentException
该方法有多个重载版本,最常用的是:
LocalTime.of(int hour, int minute, int second)LocalTime.of(int hour, int minute, int second, int nanoOfSecond)
各参数必须满足严格范围,否则抛出 DateTimeException(运行时异常):
- hour:0–23(24 小时制)
- minute:0–59
- second:0–59
- nanoOfSecond:0–999,999,999(纳秒精度,1 秒 = 10⁹ 纳秒)
例如:LocalTime.of(24, 0, 0) 或 LocalTime.of(12, 60, 0) 均非法;LocalTime.of(14, 30, 45, 123456789) 合法,表示 14:30:45.123456789。
利用纳秒参数实现微秒/毫秒级精度
虽然日常开发中秒级已足够,但若需更高精度(如日志打点、性能测量),可借助第四个参数:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
- 毫秒 → 乘以
1_000_000(如 123 毫秒 =123_000_000纳秒) - 微秒 → 乘以
1_000(如 456 微秒 =456_000纳秒) - 直接写纳秒值更直观,也避免整数溢出风险
示例:LocalTime.of(9, 15, 30, 500_000_000) 表示上午 9 点 15 分 30.5 秒。
注意:LocalTime 不处理时区与夏令时
LocalTime 仅代表“墙上时间”,不绑定任何时区或偏移量。它不关心此刻是否是夏令时、也不自动转换——这既是它的轻量优势,也是使用前提:
- 适合表示营业时间(如“09:00–18:00”)、闹钟设定、数据库中的纯时间字段
- 不适合计算跨时区事件、带时区的时间差或真实时刻推算
- 若需关联时区,请搭配
ZonedDateTime或OffsetTime
替代方式:从字符串解析更灵活(但非 of() 本意)
若时间数据来自用户输入或配置文件,推荐用 LocalTime.parse() 配合自定义格式器,而非硬编码 of() 参数:
-
LocalTime.parse("13:45:22")→ 默认 ISO_LOCAL_TIME 格式(HH:mm:ss) LocalTime.parse("01:45:22 PM", DateTimeFormatter.ofPattern("hh:mm:ss a"))
而 LocalTime.of() 的定位是**程序内精确、可控、无解析开销的构建**,适用于逻辑明确、数值已知的场景。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










