java - 有人请解释 Calendar.get(cal.DAY_OF_WEEK) 如何在 cal.DAY_OF_WEEK 是默认值且未修改时给出正确的输出?
问题描述
我想得到日期的日期。当我在 cal.set(year,month-1,day) 中设置日期时,设置日历字段YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE的值。保留其他字段的先前值。因此,当我执行 cal.DAY_OF_WEEK 时,我将获得已经存在的值。但是 cal.get(cal.DAY_OF_WEEK) 如何给出正确的值?(如 java 文档中所述,public int get(int field)返回给定日历字段的值。)我不明白如何在此函数中传递整数值(作为未修改的日历字段)给出正确的输出。
public static String findDay() {
Calendar cal = Calendar.getInstance();
cal.set(2019,1,15);
System.out.println(cal.toString());
System.out.println(cal.DAY_OF_WEEK); //7 which is unchanged by cal.set
System.out.println(cal.get(cal.DAY_OF_WEEK)); //6
return "";
}
代码输出:
java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Etc/UTC",offset=0,dstSavings=0,useDaylight=false,transi
tions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=1,WEEK_OF_YEAR=7,WEEK_OF_MONTH=3,DAY_OF_MONTH=15,DAY_OF_YEAR=46,DAY_OF_WEEK=6,DAY_OF_WEEK_IN
_MONTH=3,AM_PM=0,HOUR=11,HOUR_OF_DAY=11,MINUTE=38,SECOND=14,MILLISECOND=374,ZONE_OFFSET=0,DST_OFFSET=0]
7
6
解决方案
如果您查看Calendar
class 的 java doc,它清楚地提到了cal.DAY_OF_WEEK
. 它只表示字段的编号,该get()
方法接受字段编号并返回其值。您可以将 的值视为该方法从中检索值cal.DAY_OF_WEEK
的数组的索引。get()
请参阅下面的get()
方法文档。
Returns the value of the given calendar field. In lenient mode,
* all calendar fields are normalized. In non-lenient mode, all
* calendar fields are validated and this method throws an
* exception if any calendar fields have out-of-range values. The
* normalization and validation are handled by the
* {@link #complete()} method, which process is calendar
推荐阅读
- javascript - JavaScript Object.assign 的逆
- gradle - Gradle - 实现和运行时之间的区别
- python - 如何在python中将函数作为具有预先指定参数的另一个函数的参数传递?
- javascript - 输入宽度适合内容
- php - 我如何获取我关注的人但他们不关注?
- python - Python,Selenium:找不到第四个嵌套 iFrame
- python - 如何通过 django 属性或替代解决方案订购
- php - CURL 让页面为空?
- python-2.7 - jupyter 内核失败并出现以下错误:“模块”对象没有属性“部分”
- amazon-web-services - 如何通过cloudformation附加vpc链接以获取api网关中的方法