LocalDate.getDayOfWeek()返回DayOfWeek枚举,按ISO-8601标准定义周一为1、周日为7;显示中英文星期应使用getDisplayName(TextStyle, Locale),避免硬编码getValue();业务判断推荐直接用枚举常量switch或if。

LocalDate.getDayOfWeek() 返回的是 DayOfWeek 枚举类型,不是数字或字符串,直接使用需注意转换逻辑。它本身不带语言环境信息,显示中文/英文星期需手动适配。
理解 DayOfWeek 枚举的值和顺序
DayOfWeek 是 Java 8 引入的不可变枚举,按 ISO-8601 标准定义(周一为第 1 天,周日为第 7 天):
-
MONDAY→ 值为 1 -
TUESDAY→ 值为 2 -
WEDNESDAY→ 值为 3 -
THURSDAY→ 值为 4 -
FRIDAY→ 值为 5 -
SATURDAY→ 值为 6 -
SUNDAY→ 值为 7
注意:这与 Calendar.SUNDAY = 1 的旧习惯不同,避免用 getDayOfWeek().getValue() 硬编码判断星期几。
根据语境显示中文星期名称
推荐使用 getDisplayName() 配合 TextStyle 和 Locale,无需手写映射表:
LocalDate date = LocalDate.of(2024, 6, 12); // 周三
String cnWeek = date.getDayOfWeek()
.getDisplayName(TextStyle.FULL, Locale.CHINA); // "星期三"
String shortCn = date.getDayOfWeek()
.getDisplayName(TextStyle.SHORT, Locale.CHINA); // "周三"
也可用 Locale.SIMPLIFIED_CHINESE 替代 Locale.CHINA,效果一致。
显示英文星期(支持大小写和缩写)
同样用 getDisplayName(),切换 Locale 和 TextStyle:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
-
getDisplayName(FULL, Locale.ENGLISH)→ "Wednesday" -
getDisplayName(SHORT, Locale.ENGLISH)→ "Wed" -
getDisplayName(NARROW, Locale.ENGLISH)→ "W"(单字母形式)
若需首字母大写其余小写(如 "Wednesday"),FULL 已满足;如需全大写,可链式调用 .toUpperCase()。
在业务逻辑中判断星期并分支处理
直接用枚举值做 switch 或 if 判断,语义清晰、类型安全:
DayOfWeek dow = date.getDayOfWeek();
if (dow == DayOfWeek.SATURDAY || dow == DayOfWeek.SUNDAY) {
System.out.println("周末");
} else {
System.out.println("工作日");
}
// 或用 switch(Java 14+ 支持枚举 switch 表达式)
String type = switch (dow) {
case SATURDAY, SUNDAY -> "休息日";
default -> "工作日";
};
避免用 getValue() == 6 这类魔法数字,降低可读性和可维护性。
不复杂但容易忽略:显示内容取决于 TextStyle 和 Locale 的组合,业务中应统一封装成工具方法,避免重复写 getDisplayName(...)。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










