calendar.add(Calendar.MONDAY, -5)为什么到不了上周的周三呢?举例说明
时间: 2024-12-14 22:19:51 浏览: 16
`calendar.add(Calendar.DAY_OF_WEEK, -5)` 是试图通过向当前的星期偏移五个工作日(不包括当天)来达到上一周的周三。然而,这个计算可能不会按照预期到达上周的周三,因为`Calendar.DAY_OF_WEEK`是从0开始计数的,其中0代表周日,1代表周一,依此类推。
以假设今天是周一为例(也就是`Calendar.DAY_OF_WEEK`为1),当你调用 `calendar.add(Calendar.DAY_OF_WEEK, -5)`,会从1(周一)减去5,得到-4。由于日历中没有负数的日子,这实际上会使你跳过了一整个星期,到了下一周的周四(因为周四是-3,周五是-2,周六是-1)。所以,正确的做法应该是:
```java
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_WEEK, -Calendar.MONDAY); // 或者 calendar.add(Calendar.DAY_OF_WEEK, -1); 直接跳回上周
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println("Last Wednesday: " + dayOfWeek); // 如果今天是周一,输出将会是2,表示上周三
```
这样,你会到达上周的周三,因为-1代表的是前一天,即周日,再加一天就是周一,以此类推。
阅读全文