为何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
相关产品推荐
相关产品推荐

