【Java】Canlendar类界定跨年或者跨月份的星期定义

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class TimeTest {
    public static void main(String[] args) {

        Calendar calendar=Calendar.getInstance();
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        //第一周最少要有几天
        calendar.setMinimalDaysInFirstWeek(7);
        //一周第一天是周几,这个设置不起作用,待确认原因
        // calendar.setFirstDayOfWeek(Calendar.MONDAY);
        //一周第一天是周几,这个起作用
        calendar.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
        for (int i = 2022; i < 2100; i++) {
            calendar.set(Calendar.YEAR, i);
            calendar.set(Calendar.WEEK_OF_YEAR, 1);
            String time = dateFormat.format(calendar.getTime());
            System.out.println(time);
        }

    }
}

结果

2022-01-03
2023-01-02
2024-01-08
2025-01-06
2026-01-05
2027-01-04
2028-01-03
2029-01-08
2030-01-07
2031-01-06
2032-01-05
2033-01-03
2034-01-02
2035-01-08
2036-01-07
2037-01-05
2038-01-04
2039-01-03
2040-01-02
2041-01-07
2042-01-06
2043-01-05
2044-01-04
2045-01-02
2046-01-08
2047-01-07
2048-01-06
2049-01-04
2050-01-03
2051-01-02
2052-01-08
2053-01-06
2054-01-05
2055-01-04
2056-01-03
2057-01-08
2058-01-07
2059-01-06
2060-01-05
2061-01-03
2062-01-02
2063-01-08
2064-01-07
2065-01-05
2066-01-04
2067-01-03
2068-01-02
2069-01-07
2070-01-06
2071-01-05
2072-01-04
2073-01-02
2074-01-08
2075-01-07
2076-01-06
2077-01-04
2078-01-03
2079-01-02
2080-01-08
2081-01-06
2082-01-05
2083-01-04
2084-01-03
2085-01-08
2086-01-07
2087-01-06
2088-01-05
2089-01-03
2090-01-02
2091-01-08
2092-01-07
2093-01-05
2094-01-04
2095-01-03
2096-01-02
2097-01-07
2098-01-06
2099-01-05

setMinimalDaysInFirstWeek(7),意思是第一周的最小天数为7。也可以设置别的最小天数,这样一年的开始的第一周就能确定下来,以后的周数的都能准确的推算出来。
根据一年中的周数去获取日期也能准确获取到。
参考

  1. Java关于周跨年的周数计算
posted @ 2022-11-17 18:56  _且歌且行  阅读(334)  评论(0)    收藏  举报