You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Java中getDayOfWeek方法不返回星期数字?

修复:输出以周一为1的星期数字

你当前代码里,getDayOfWeek()返回的是java.time.DayOfWeek枚举对象,直接打印会输出枚举的英文名称(比如FRIDAY),而非数字。另外要注意:DayOfWeek自带的getValue()方法默认是周日为1、周六为7,不符合你要的“1代表周一”的规则,所以需要做以下调整:

方法一:用ISO标准星期字段(推荐)

ISO标准默认周一为1、周日为7,直接通过WeekFields获取即可,需要额外导入java.time.temporal.WeekFields:

import java.time.LocalDate;
import java.time.temporal.WeekFields;

// 假设year、month、day是已定义的变量
LocalDate targetDate = LocalDate.of(year, month, day);
int weekDayNum = targetDate.get(WeekFields.ISO.dayOfWeek());
System.out.println(weekDayNum);

方法二:基于枚举值转换(无需额外导入)

如果不想新增导入,可通过计算调整默认的getValue()结果:

import java.time.LocalDate;
import java.time.DayOfWeek;

// 假设year、month、day是已定义的变量
DayOfWeek weekDay = LocalDate.of(year, month, day).getDayOfWeek();
// 把默认周日=1转换为周一=1
int weekDayNum = weekDay.getValue() == 1 ? 7 : weekDay.getValue() - 1;
System.out.println(weekDayNum);

提示:方法一更符合通用的星期数字定义,代码可读性更高,优先推荐使用。

内容的提问来源于stack exchange,提问作者Sinkos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 11:42:05