localdate.getdayofweek() 直接返回 dayofweek 枚举,类型安全且语义清晰;可调用 getdisplayname() 转中文或英文名、getvalue() 获取 iso-8601 数值(周一为1),支持 switch 和直接枚举比较。

LocalDate.getDayOfWeek() 直接返回 DayOfWeek 枚举类型,无需转换,调用即得。
直接获取 DayOfWeek 枚举
Java 8 引入的 LocalDate 提供了 getDayOfWeek() 方法,返回标准的 java.time.DayOfWeek 枚举(如 MONDAY、TUESDAY 等):
- 返回值是枚举实例,不是数字或字符串,类型安全且语义清晰
- 无需额外解析或映射,避免手动处理 1~7 的歧义(比如周一是 1 还是 7)
- 示例:
LocalDate.now().getDayOfWeek()可能返回DayOfWeek.WEDNESDAY
常用操作:转为中文、数字或英文名
虽然返回的是枚举,但常需展示给用户。可借助枚举自带方法:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
-
dayOfWeek.getDisplayName(TextStyle.SHORT, Locale.CHINA)→ “周三” -
dayOfWeek.getDisplayName(TextStyle.FULL, Locale.US)→ “Wednesday” -
dayOfWeek.getValue()→ 返回 1(周一)到 7(周日),符合 ISO-8601 标准
注意周起始日差异
DayOfWeek 严格遵循 ISO-8601:周一为第一天(值为 1),周日为第七天(值为 7)。这与部分地区习惯(如美国以周日为一周开始)不同:
- 不要用
Calendar.SUNDAY类比,二者数值和含义不兼容 - 若业务要求“周日为第一天”,需自行映射,例如:
(dayOfWeek.getValue() % 7) + 1(使周日=1,周一=2…)
简单判断星期几的写法
利用枚举可读性高、支持 switch 的特性:
switch (localDate.getDayOfWeek()) { case SATURDAY: case SUNDAY: ... }-
localDate.getDayOfWeek() == DayOfWeek.FRIDAY直接比较,语义明确 - 避免用
localDate.getDayOfWeek().getValue() == 5,可读性差且易出错
不复杂但容易忽略——拿到的就是枚举,用好它自带的方法和语义,比自己造轮子更可靠。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










