gpt4 book ai didi

Java 日历 DAY_OF_WEEK 设置为零

转载 作者:行者123 更新时间:2023-12-04 01:02:27 25 4
gpt4 key购买 nike

我有这个来自 PROD(> 7 年)的非常旧的代码块需要调试。有一点我无法理解。代码中的一个部分计算下一次任务将运行的时间,对于需要特别在星期日、星期一运行的任务,它使用 Calendar.SUNDAY。但是有一种说法即使在多次阅读文档后我也无法解释其行为

日历 cal = Calendar.getInstance();cal.set(日历.DAY_OF_WEEK, 0);

由于天数从 1-7(Calendar.SUNDAYCalendar.SATURDAY)可以解释,但是零在这里如何工作以及为什么有没有异常(exception)?

最佳答案

why there is no exception?

因为你没有设置宽松模式为false,默认为true

演示:

import java.util.Calendar;

public class Main {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
cal.setLenient(false);
cal.set(Calendar.DAY_OF_WEEK, 0);
System.out.println(cal.getTime());
}
}

输出:

Exception in thread "main" java.lang.IllegalArgumentException: DAY_OF_WEEK

文档说:

Any out of range values are either normalized in lenient mode ordetected as an invalid value in non-lenient mode

作为规范化的一部分,值会翻转,例如以下代码将值设置为等同于 cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY - 1):

cal.set(Calendar.DAY_OF_WEEK, 0);

类似地,以下代码将值设置为等同于 cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY - 2):

cal.set(Calendar.DAY_OF_WEEK, -1);

关于Java 日历 DAY_OF_WEEK 设置为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67827213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com