Calendar.add和Calendar.set方法
时间: 2024-04-19 20:19:42 浏览: 26
Calendar.add方法用于在Calendar实例中添加或减去指定的时间量。它接受两个参数,第一个参数是时间字段(例如Calendar.YEAR,Calendar.MONTH等),第二个参数是要添加或减去的时间量。下面是一个示例:
```java
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR, 1); // 在当前日期上加1年
calendar.add(Calendar.MONTH, -3); // 在当前日期上减去3个月
calendar.add(Calendar.DAY_OF_MONTH, 7); // 在当前日期上加7天
```
Calendar.set方法用于设置Calendar实例表示的日期和时间。它接受两个参数,第一个参数是时间字段,第二个参数是要设置的值。下面是一个示例:
```java
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 2022); // 设置年份为2022
calendar.set(Calendar.MONTH, Calendar.JANUARY); // 设置月份为一月
calendar.set(Calendar.DAY_OF_MONTH, 15); // 设置日期为15号
```
这样,Calendar实例就表示了2022年1月15日的日期和时间。
相关问题
calendar.add(Calendar.MONTH, 1);和calendar.set(Calendar.DAY_OF_MONTH, 0);的作用
`calendar.add(Calendar.MONTH, 1)` 的作用是将 `Calendar` 对象中的月份字段加上 1,即将当前的月份向后推一月。例如,如果当前月份为 5 月,则执行该语句后,月份字段的值将变为 6。
`calendar.set(Calendar.DAY_OF_MONTH, 0)` 的作用是将 `Calendar` 对象中的日期字段设置为该月的最后一天。即将日期字段设置为 0,表示上一个月的最后一天,然后调用 `getTime()` 方法获取 `Date` 对象,再将日期字段设置为 1,最后再将 `Date` 对象转换为 `Calendar` 对象,这时 `Calendar` 对象中的日期字段就是该月的最后一天了。
综合起来,这两行代码的作用是将 `Calendar` 对象中的日期字段设置为下一个月的第一天,然后再减去一天,即得到当前月份的最后一天。这个操作常用于计算某个日期所在月份的天数。
Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek()); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); for (int i = 0; i < 7; i++) { Date startDate = calendar.getTime(); calendar.add(Calendar.DATE, 1); calendar.add(Calendar.MILLISECOND, -1); Date endDate = calendar.getTime(); System.out.println("start: " + dateFormat.format(startDate) + ", end: " + dateFormat.format(endDate)); calendar.add(Calendar.MILLISECOND, 1); } 输出结果
这段代码的作用是输出当前周的每一天的起始时间和结束时间。首先通过 `Calendar.getInstance()` 获取当前日期的 `Calendar` 对象,然后使用 `calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek())` 将日期设置为本周的第一天,即星期日。接着使用 `SimpleDateFormat` 格式化日期,并循环输出每一天的起始时间和结束时间。
具体输出结果取决于当前日期是哪一天,以下是一个例子输出结果:
```
start: 2021-11-01 00:00:00, end: 2021-11-01 23:59:59
start: 2021-11-02 00:00:00, end: 2021-11-02 23:59:59
start: 2021-11-03 00:00:00, end: 2021-11-03 23:59:59
start: 2021-11-04 00:00:00, end: 2021-11-04 23:59:59
start: 2021-11-05 00:00:00, end: 2021-11-05 23:59:59
start: 2021-11-06 00:00:00, end: 2021-11-06 23:59:59
start: 2021-11-07 00:00:00, end: 2021-11-07 23:59:59
```