java怎么获取指定时间段内的每个自然周的周一
时间: 2024-01-31 21:02:05 浏览: 107
可以使用Java的Calendar类来获取指定时间段内的每个自然周的周一。具体方法如下:
1. 定义起始日期和结束日期。
2. 创建一个Calendar对象并设置为起始日期。
3. 使用while循环,判断当前日期是否在指定的时间段内,如果是则继续。
4. 在循环内,先获取当前日期的星期几,如果是周日则往前推6天,如果是其他天则往前推相应天数,使其变成周一。
5. 输出当前的日期。
6. 将当前日期加7天,进入下一周的循环。
代码示例:
```
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class GetMonday {
public static void main(String[] args) {
String fromDate = "2021-01-01"; // 起始日期
String toDate = "2021-02-28"; // 结束日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
try {
// 设置起始日期
Date start = sdf.parse(fromDate);
c.setTime(start);
// 判断当前日期是否在指定时间段内
while(c.getTime().before(sdf.parse(toDate)) || c.getTime().equals(sdf.parse(toDate))) {
// 获取当前日期的星期几
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
// 将日期调整为当前周的周一
if(dayOfWeek == Calendar.SUNDAY) {
c.add(Calendar.DAY_OF_MONTH, -6);
} else {
c.add(Calendar.DAY_OF_MONTH, (2 - dayOfWeek));
}
// 输出当前日期
System.out.println(sdf.format(c.getTime()));
// 将日期加7天,进入下一周
c.add(Calendar.DAY_OF_MONTH, 7);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
输出结果:
```
2021-01-04
2021-01-11
2021-01-18
2021-01-25
2021-02-01
2021-02-08
2021-02-15
2021-02-22
```
阅读全文