商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 如何在 Java 中使用 LocalDate.getDayOfWeek() 获取日期的星期属性并根据语境进行显示

如何在 Java 中使用 LocalDate.getDayOfWeek() 获取日期的星期属性并根据语境进行显示

  发布于2026-07-08 阅读(0)

扫一扫,手机访问

LocalDate.getDayOfWeek() 这个方法的返回值可不是简单的数字或字符串——它是一个 DayOfWeek 枚举。这意味着什么?直接拿它来显示星期几,通常需要做一层转换。而且它本身不携带语言环境信息,要显示中文还是英文,得手动适配一下。下面把几个常用场景拆开来说。

理解 DayOfWeek 枚举的值和顺序

DayOfWeek 是 Ja va 8 引入的不可变枚举,按 ISO-8601 标准定义(周一为第 1 天,周日为第 7 天):

  • MONDAY → 值为 1
  • TUESDAY → 值为 2
  • WEDNESDAY → 值为 3
  • THURSDAY → 值为 4
  • FRIDAY → 值为 5
  • SATURDAY → 值为 6
  • SUNDAY → 值为 7

这里提个醒:这个顺序和旧版 Calendar.SUNDAY = 1 的习惯完全不同,千万别图省事直接用 getDayOfWeek().getValue() 做硬编码判断。否则某天查出来“6”以为是周五,结果却是周六——这种坑踩过的人都懂。

根据语境显示中文星期名称

推荐用 getDisplayName() 配合 TextStyleLocale,一行代码搞定,根本不用手写什么“周一、周二”的映射表:

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 效果一样,看个人习惯选一个就行。

显示英文星期(支持大小写和缩写)

套路完全一样,换个 LocaleTextStyle 就出来了:

  • 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(Ja va 14+ 支持枚举 switch 表达式)
String type = switch (dow) {
    case SATURDAY, SUNDAY -> "休息日";
    default -> "工作日";
};

千万别用 getValue() == 6 这种写法——哪天同事改个标准就全崩了,而且读代码的人还得去查 6 到底代表星期几,何必呢。

事儿不复杂,但容易忽略的是:显示成什么样子完全取决于 TextStyleLocale 的组合,业务里最好统一封装成一个工具方法,别每个地方都写一遍 getDisplayName(...),既冗余又容易出错。

如何在 Ja va 中使用 LocalDate.getDayOfWeek() 获取日期的星期属性并根据语境进行显示

本文转载于:https://www.php.cn/faq/2419321.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注