获取当前时间为本月第几周 以第一个周一为本月第一周 每周一为本周第一天

//获取传入的日期天为当月的第几周 返回年月周   每月第一个星期一为第一周,每周一为该周的第一天
    private static String[] getWeekByDate() throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 设置时间格式
        Calendar cal = Calendar.getInstance();
        cal.setTime(new Date());
// 判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了
        int dayWeek = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天
        if (1 == dayWeek) {
            cal.add(Calendar.DAY_OF_MONTH, -1);
        }
        cal.setFirstDayOfWeek(Calendar.MONDAY);// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
        int day = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天
        cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);// 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
        //第几周
        int week = cal.get(Calendar.WEEK_OF_MONTH);
        int first = getFirst(sdf.format(cal.getTime()));
        if (first != 1) {
            week = week-1;
        }
        String[] split = sdf.format(cal.getTime()).split("-");
        split[2] = week+"";
        return split;
        //System.out.println("所在周星期一的日期:" + sdf.format(cal.getTime()) +"第几周"+week);
    }


 //每月一号是周几
    public static int getFirst(String str) throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar calendar = Calendar.getInstance();
        String[] split = str.split("-");
        String dateStr = split[0]+"-"+split[1]+"-1";
        Date date1 = sdf.parse(dateStr);
        calendar.setTime(date1);
        //第几天,从周日开始
        int day = calendar.get(Calendar.DAY_OF_WEEK)-1;
        if (0 == day) {
            day = 7;
        }
        return day;
    }

 

 

 

 

posted @ 2021-02-28 09:25  彈指一揮間  阅读(733)  评论(0编辑  收藏  举报