首页 > 其他 > 详细

getWeeks获取当前月自然周数

时间:2019-08-27 20:14:51      阅读:102      评论:0      收藏:0      [点我收藏+]

代码:

/**
     * 获取当前月自然周数,并返回每周开始日期和每周结束日期
     * @param date 2013-9 : 1-1,2-8,9-15,16-22,23-29,30-30
     * @return
     * @throws Exception
     */
    public static String getWeeks(String date){
        StringBuilder sb = new StringBuilder("");
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
        Date date1 = null;
        try {
            date1 = dateFormat.parse(date);
        } catch (ParseException e) {
            System.out.println("获取当前月自然周,日期格式转换错误!11");
            e.printStackTrace();
        }
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(date1);
        int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
        int count = 0;
        for (int i = 1; i <= days; i++) {
            DateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
            Date date2 = null;
            try {
                date2 = dateFormat1.parse(date + "-" + i);
            } catch (ParseException e) {
                System.out.println("获取当前月自然周,日期格式转换错误!22");
                e.printStackTrace();
            }
            calendar.clear();
            calendar.setTime(date2);
            int k = new Integer(calendar.get(Calendar.DAY_OF_WEEK));
            int startDay = 0;
            int endDay = 0;
            // 若当天是周日
            if (k == 1) {
                count++;
                if (i - 6 <= 1) {
                    startDay = 1;
                } else {
                    startDay = i - 6;
                }
                endDay = i;
            }
            // 若是本月最好一天,且不是周日
            if (k != 1 && i == days) {
                count++;
                startDay = i - k + 2;
                endDay = i;
            }
            if(startDay != 0 && endDay != 0){
                if(sb.toString() == null || "".equals(sb.toString())){
                    sb.append(startDay + "-" + endDay);
                }else{
                    sb.append("," + startDay + "-" + endDay);
                }
            }
        }
        System.out.println(date + "共计" + count + "周,结果=" + sb.toString());
        return sb.toString();
    }

输出:

getWeeks("2013-9");
getWeeks("2019-08");

2013-9共计6周,结果=1-1,2-8,9-15,16-22,23-29,30-30 2019-08共计5周,结果=1-4,5-11,12-18,19-25,26-31

ps(吐槽):

奇葩方法来源于奇葩需求,奇葩需求来源于奇葩业务!!

getWeeks获取当前月自然周数

原文:https://www.cnblogs.com/huakaiyoushi/p/11420209.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!