java中month.of(int)方法用1~12获取对应month枚举值,1为一月、12为十二月,越界抛datetimeexception;常用于转换用户输入、数据库月份编号或构造localdate,使用前应校验范围。

Java 中可以通过 Month.of(int) 静态方法,用数字 1 到 12 获取对应的 Month 枚举值。
Month.of() 的基本用法
该方法接受一个从 1(一月)到 12(十二月)的整数参数,返回对应的 Month 枚举实例。注意:**不是从 0 开始**,1 就是一月,12 就是十二月。
-
Month.of(1)→Month.JANUARY -
Month.of(12)→Month.DECEMBER -
Month.of(0)或Month.of(13)会抛出DateTimeException
常见使用场景示例
比如从用户输入、数据库字段或配置中读取月份编号后转换:
int monthNum = 5; Month month = Month.of(monthNum); // 得到 Month.MAY String name = month.getDisplayName(TextStyle.FULL, Locale.CHINA); // "五月"
也可配合 LocalDate 构造使用:
-
LocalDate.of(2024, Month.of(3), 15)→ 2024年3月15日 -
LocalDate.of(2024, 3, 15)效果相同(底层也调用了Month.of(3))
安全获取:避免异常的建议
如果输入来源不可靠(如用户输入、外部 API),建议先校验范围再调用:
- 手动检查:
if (monthNum >= 1 && monthNum - 或封装工具方法,返回
Optional<month></month>避免异常 - 不推荐用 try-catch 包裹
Month.of()做流程控制
和 Calendar.MONTH 的区别(注意别混淆)
Calendar.MONTH 是从 0 开始(JANUARY = 0),而 Month.of() 是从 1 开始。迁移旧代码时要特别注意加 1 或减 1:
Calendar cal = Calendar.getInstance(); int calMonth = cal.get(Calendar.MONTH); // 0~11Month month = Month.of(calMonth + 1); // 转成现代 API
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











