calendar.add(Calendar.DAY_OF_WEEK ,7);
时间: 2024-04-26 15:22:50 浏览: 135
这行代码的作用是将Calendar对象中的星期字段增加7天。假设当前Calendar对象表示的日期是2021年8月1日(星期日),则执行该代码之后,Calendar对象表示的日期会变成2021年8月8日(星期日)。
需要注意的是,Calendar.DAY_OF_WEEK表示星期字段,它的取值范围是1~7,分别表示星期日到星期六。其中,星期日的值为1,星期六的值为7。所以在使用add方法时,要注意星期字段的取值范围。另外,由于星期字段的增加是以天为单位进行的,所以在处理星期字段时,也要注意其他日期字段的变化,比如月份、年份等。
相关问题
为什么calendar.add(Calendar.DAY_OF_WEEK, -5)不一定是周三calendar.add(Calendar.DAY_OF_WEEK, -6)一定是周二呢
`calendar.add(Calendar.DAY_OF_WEEK, -n)` 方法会改变当前日期到最近的同一天(比如工作日),但不是简单地向前或向后跳过 n 天。当 `n` 是正数时,它会尝试增加星期几的数量,如果超过了该月的日数,就会从下一个月开始计算。因此,如果你调用 `calendar.add(Calendar.DAY_OF_WEEK, -5)`,这可能不会总是返回周三,因为如果今天已经是周二并且往前推五天,结果可能是周一。
同样地,`-6` 表示往前推六天,如果是周五,那么 `+(-6)` 实际上是回到周四;如果在周四之后,则会是周三(除非是最后一天)。所以 `-6` 不一定就是周二,而是最近的一个周二。
要确保得到特定的星期几,可以先设置目标星期几,再调整日期:
```java
// 设置期望的星期三
calendar.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
// 如果需要减去几天以到达特定的星期三
calendar.add(Calendar.DAY_OF_WEEK, -5);
System.out.println(calendar.getTime());
```
Calendar cal = Calendar.getInstance(); cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); Date monday = cal.getTime(); cal.add(Calendar.DAY_OF_WEEK, 1); Date tuesday = cal.getTime(); cal.add(Calendar.DAY_OF_WEEK, 1); Date wednesday = cal.getTime(); cal.add(Calendar.DAY_OF_WEEK, 1); Date thursday = cal.getTime(); cal.add(Calendar.DAY_OF_WEEK, 1); Date friday = cal.getTime();
这段代码使用`java.util.Calendar`来获取当前日期所在周的星期一至星期五的日期。
首先,通过`Calendar.getInstance()`获取一个`Calendar`实例,表示当前日期和时间。
然后,使用`cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY)`设置`Calendar`对象的日期为本周的星期一。
接下来,通过`cal.getTime()`将`Calendar`对象转换为`Date`对象,得到星期一的日期,并赋值给变量`monday`。
随后,通过`cal.add(Calendar.DAY_OF_WEEK, 1)`将`Calendar`对象的日期加一天,得到星期二的日期,并赋值给变量`tuesday`。
依次类推,通过不断调用`cal.add(Calendar.DAY_OF_WEEK, 1)`和`cal.getTime()`,可以得到星期三、星期四和星期五的日期,分别赋值给变量`wednesday`、`thursday`和`friday`。
最终,我们可以使用这些变量来表示当前日期所在周的星期一至星期五的日期。
阅读全文