dayofweek.of(int)方法按iso-8601标准将1~7映射为周一至周日,1对应monday、7对应sunday;输入超出范围抛datetimeexception;需校验或转换兼容周日为1的场景。

Java 中 DayOfWeek 的 of(int) 方法可以直接根据数字 1 到 7 获取对应的星期枚举,但要注意:**1 表示 Monday(周一),7 表示 Sunday(周日)**,这是 ISO-8601 标准定义,不是从周日开始的旧习惯。
DayOfWeek.of() 的数字映射规则
DayOfWeek.of(int dayOfWeek) 接受一个 1~7 的整数,返回对应枚举值:
- 1 →
DayOfWeek.MONDAY - 2 →
DayOfWeek.TUESDAY - 3 →
DayOfWeek.WEDNESDAY - 4 →
DayOfWeek.THURSDAY - 5 →
DayOfWeek.FRIDAY - 6 →
DayOfWeek.SATURDAY - 7 →
DayOfWeek.SUNDAY
使用示例
直接调用即可,无需额外转换:
DayOfWeek dow = DayOfWeek.of(3); // 返回 WEDNESDAY System.out.println(dow); // 输出:WEDNESDAY System.out.println(dow.getDisplayName(TextStyle.FULL, Locale.CHINA)); // 输出:星期三
注意边界和异常
传入非 1~7 的数字会抛出 DateTimeException:
-
DayOfWeek.of(0)或DayOfWeek.of(8)都会报错 - 建议在调用前校验输入范围,尤其当数字来自用户输入或数据库时
- 可配合
Optional或 try-catch 处理异常情况
如果需要“周日为 1”的兼容逻辑
Java 默认不支持以周日为起点,但可以手动转换:
- 把输入值
n转为 ISO 标准:若n == 1(周日),映射为 7;其余n映射为n - 1 - 即:
int isoValue = (n == 1) ? 7 : n - 1;,再调用DayOfWeek.of(isoValue) - 或者用模运算:
DayOfWeek.of((n % 7) + 1)(前提是 n 是 1~7 的整数)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











