关于1月1号如果为非星期一,那么定义该周为去年的最后一周

实现思路:

目录

实现点一: 获取新的计算方式一年有多少周

实现点二:关于新的计算方式,如何代码实现第一周的时间计算

实现点三:关于如何传入时间,获取当前时间为第几年的第几周。因为如果传入时间,例如2023年 1月1号可能为去年的最后一周


实现点一: 获取新的计算方式一年有多少周

         

    // 实现思路
        Calendar calendar1 = Calendar.getInstance();
        // 设置获取的年份
        calendar1.set(Calendar.YEAR,2024);
        // 设置一周开始的时间
        calendar1.setFirstDayOfWeek(Calendar.MONDAY);
        // setMinimalDaysInFirstWeek  设置一年的第一周最少得天数
        calendar1.setMinimalDaysInFirstWeek(7);
        // 获取一年有多少周
        int weeksInWeekYear = calendar1.getWeeksInWeekYear();
        System.out.println("一年有:"+weeksInWeekYear+"周");

实现点二:关于新的计算方式,如何代码实现第一周的时间计算

      // 实现点二:关于新的计算方式,如何代码实现第一周的时间计算
        Calendar calendar2 = Calendar.getInstance();
        // 设置一周开始的时间
        calendar2.setFirstDayOfWeek(Calendar.MONDAY);
        // setMinimalDaysInFirstWeek  设置一年的第一周最少得天数
        calendar2.setMinimalDaysInFirstWeek(7);
        for (int i = 1; i <= weeksInWeekYear; i++) {
            // weekYear-周年
            //weekOfYear-基于weekYear的星期数
            //dayOfWeek-星期几的值
            calendar2.setWeekDate(2023,i,Calendar.MONDAY);
            int year = calendar2.get(Calendar.YEAR);
            int month = calendar2.get(Calendar.MONTH) + 1;
            int day  = calendar2.get(Calendar.DAY_OF_MONTH);
            System.out.println(year +" 年 " +month + "\t月\t"+day+"\t日\t");
        }

实现点三:关于如何传入时间,获取当前时间为第几年的第几周。因为如果传入时间,例如2023年 1月1号可能为去年的最后一周

  // 实现点三:关于如何传入时间,获取当前时间为第几年的第几周。因为如果传入时间,例如2023年 1月1号可能为去年的最后一周

        // 先指定一个时间 或者 定义为当前时间也可。方式不一
        Calendar calendar3 = Calendar.getInstance();
        calendar3.set(Calendar.YEAR,2022);
        calendar3.set(Calendar.MONTH,0);
        calendar3.set(Calendar.DATE,1);
        Date date = calendar3.getTime();


        Calendar calendarWeek = Calendar.getInstance();
        // 下面两句其实加不加都可以实现。因为一周7天,就已经够了。
//        calendarWeek.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); // 设置周一为一周的开始
//        calendarWeek.setFirstDayOfWeek(Calendar.MONDAY); //以周一为首日
        calendarWeek.setMinimalDaysInFirstWeek(7);//
        calendarWeek.setTime(date);
        //获取当前周为第几周
        int week = calendarWeek.get(Calendar.WEEK_OF_YEAR);
        // 如何判断为当前周为哪一年的  如果日期为1月份且天数小于7 周数大于50,那么判定为上一年的的最后一周
        int year = calendarWeek.get(Calendar.YEAR);
        int month = calendarWeek.get(Calendar.MONTH) + 1;
        int day = calendarWeek.get(Calendar.DATE);
        if ((month == 1 && day < 7) && week > 50){
            year -= 1;
        }

        System.out.println("当前周为"+year+"年\t当前的周是第"+week+"\t周");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值