java 使用Calendar类计算每月有多少自然周,并输出每周的开始和结束日期

思路:首先是获取该月的实际天数,然后从1号遍历直至该月最后一天,利用Calendar类找出该日是一周中的第几天,

(1)若该日是周日,则视为一周结束,并用该日期减去6找到该周的开始日期,若相减结果小于等于1,则说明该周起始日期应该是本月1号。

(1)若该日不是周日,且是该月最后一天,则应该在上面计算的基础上再加一周,视月末为该周的结束日,该周起始日期应为改日期减去改日

在一周中的位置加2,例如:2013-09-30号是周一,则视为9月份中的第六周,开始日期是30-2+2

提示:Calendar 类中视周日为一周的开始,值是1

示例代码:

public static void printfWeeks(String date) throws Exception {
        // String date = "2013-09";
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
        Date date1 = dateFormat.parse(date);
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(date1);
        int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
        System.out.println("days:" + days);
        int count = 0;
        for (int i = 1; i <= days; i++) {
            DateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
            Date date2 = dateFormat1.parse(date + "-" + i);
            calendar.clear();
            calendar.setTime(date2);
            int k = new Integer(calendar.get(Calendar.DAY_OF_WEEK));
            if (k == 1) {// 若当天是周日
                count++;
                System.out.println("-----------------------------------");
                System.out.println("第" + count + "周");
                if (i - 6 <= 1) {
                    System.out.println("本周开始日期:" + date + "-" + 1);
                } else {
                    System.out.println("本周开始日期:" + date + "-" + (i - 6));
                }
                System.out.println("本周结束日期:" + date + "-" + i);
                System.out.println("-----------------------------------");
            }
            if (k != 1 && i == days) {// 若是本月最好一天,且不是周日
                count++;
                System.out.println("-----------------------------------");
                System.out.println("第" + count + "周");
                System.out.println("本周开始日期:" + date + "-" + (i - k + 2));
                System.out.println("本周结束日期:" + date + "-" + i);
                System.out.println("-----------------------------------");
            }
        }
    }

测试代码:

public static void main(String[] args) throws Exception {
        String s = "2013-";
        for (int i = 1; i <= 12; i++) {
            System.out.println("*******************************************");
            System.out.println("月份:" + i);
            printfWeeks(s + i);
            System.out.println("*******************************************");

        }
//        printfWeeks(s + 2);
    } 

输出结果:

******************************************* 
月份:1 
days:31 
----------------------------------- 
第1周 
本周开始日期:2013-1-1 
本周结束日期:2013-1-6 
----------------------------------- 
----------------------------------- 
第2周 
本周开始日期:2013-1-7 
本周结束日期:2013-1-13 
----------------------------------- 
----------------------------------- 
第3周 
本周开始日期:2013-1-14 
本周结束日期:2013-1-20 
----------------------------------- 
----------------------------------- 
第4周 
本周开始日期:2013-1-21 
本周结束日期:2013-1-27 
----------------------------------- 
----------------------------------- 
第5周 
本周开始日期:2013-1-28 
本周结束日期:2013-1-31 
----------------------------------- 
******************************************* 
******************************************* 
月份:2 
days:28 
----------------------------------- 
第1周 
本周开始日期:2013-2-1 
本周结束日期:2013-2-3 
----------------------------------- 
----------------------------------- 
第2周 
本周开始日期:2013-2-4 
本周结束日期:2013-2-10 
----------------------------------- 
----------------------------------- 
第3周 
本周开始日期:2013-2-11 
本周结束日期:2013-2-17 
----------------------------------- 
----------------------------------- 
第4周 
本周开始日期:2013-2-18 
本周结束日期:2013-2-24 
----------------------------------- 
----------------------------------- 
第5周 
本周开始日期:2013-2-25 
本周结束日期:2013-2-28 
----------------------------------- 
******************************************* 
******************************************* 
月份:3 
days:31 
----------------------------------- 
第1周 
本周开始日期:2013-3-1 
本周结束日期:2013-3-3 
----------------------------------- 
----------------------------------- 
第2周 
本周开始日期:2013-3-4 
本周结束日期:2013-3-10 
----------------------------------- 
----------------------------------- 
第3周 
本周开始日期:2013-3-11 
本周结束日期:2013-3-17 
----------------------------------- 
----------------------------------- 
第4周 
本周开始日期:2013-3-18 
本周结束日期:2013-3-24 
----------------------------------- 
----------------------------------- 
第5周 
本周开始日期:2013-3-25 
本周结束日期:2013-3-31 
----------------------------------- 
******************************************* 
******************************************* 
月份:4 
days:30 
----------------------------------- 
第1周 
本周开始日期:2013-4-1 
本周结束日期:2013-4-7 
----------------------------------- 
----------------------------------- 
第2周 
本周开始日期:2013-4-8 
本周结束日期:2013-4-14 
----------------------------------- 
----------------------------------- 
第3周 
本周开始日期:2013-4-15 
本周结束日期:2013-4-21 
----------------------------------- 
----------------------------------- 
第4周 
本周开始日期:2013-4-22 
本周结束日期:2013-4-28 
----------------------------------- 
----------------------------------- 
第5周 
本周开始日期:2013-4-29 
本周结束日期:2013-4-30 
----------------------------------- 
******************************************* 
******************************************* 
月份:5 
days:31 
----------------------------------- 
第1周 
本周开始日期:2013-5-1 
本周结束日期:2013-5-5 
----------------------------------- 
----------------------------------- 
第2周 
本周开始日期:2013-5-6 
本周结束日期:2013-5-12 
----------------------------------- 
----------------------------------- 
第3周 
本周开始日期:2013-5-13 
本周结束日期:2013-5-19 
----------------------------------- 
----------------------------------- 
第4周 
本周开始日期:2013-5-20 
本周结束日期:2013-5-26 
----------------------------------- 
----------------------------------- 
第5周 
本周开始日期:2013-5-27 
本周结束日期:2013-5-31 
----------------------------------- 
******************************************* 
******************************************* 
月份:6 
days:30 
----------------------------------- 
第1周 
本周开始日期:2013-6-1 
本周结束日期:2013-6-2 
----------------------------------- 
----------------------------------- 
第2周 
本周开始日期:2013-6-3 
本周结束日期:2013-6-9 
----------------------------------- 
----------------------------------- 
第3周 
本周开始日期:2013-6-10 
本周结束日期:2013-6-16 
----------------------------------- 
----------------------------------- 
第4周 
本周开始日期:2013-6-17 
本周结束日期:2013-6-23 
----------------------------------- 
----------------------------------- 
第5周 
本周开始日期:2013-6-24 
本周结束日期:2013-6-30 
----------------------------------- 
******************************************* 
******************************************* 
月份:7 
days:31 
----------------------------------- 
第1周 
本周开始日期:2013-7-1 
本周结束日期:2013-7-7 
----------------------------------- 
----------------------------------- 
第2周 
本周开始日期:2013-7-8 
本周结束日期:2013-7-14 
----------------------------------- 
----------------------------------- 
第3周 
本周开始日期:2013-7-15 
本周结束日期:2013-7-21 
----------------------------------- 
----------------------------------- 
第4周 
本周开始日期:2013-7-22 
本周结束日期:2013-7-28 
----------------------------------- 
----------------------------------- 
第5周 
本周开始日期:2013-7-29 
本周结束日期:2013-7-31 
----------------------------------- 
******************************************* 
******************************************* 
月份:8 
days:31 
----------------------------------- 
第1周 
本周开始日期:2013-8-1 
本周结束日期:2013-8-4 
----------------------------------- 
----------------------------------- 
第2周 
本周开始日期:2013-8-5 
本周结束日期:2013-8-11 
----------------------------------- 
----------------------------------- 
第3周 
本周开始日期:2013-8-12 
本周结束日期:2013-8-18 
----------------------------------- 
----------------------------------- 
第4周 
本周开始日期:2013-8-19 
本周结束日期:2013-8-25 
----------------------------------- 
----------------------------------- 
第5周 
本周开始日期:2013-8-26 
本周结束日期:2013-8-31 
----------------------------------- 
******************************************* 
******************************************* 
月份:9 
days:30 
----------------------------------- 
第1周 
本周开始日期:2013-9-1 
本周结束日期:2013-9-1 
----------------------------------- 
----------------------------------- 
第2周 
本周开始日期:2013-9-2 
本周结束日期:2013-9-8 
----------------------------------- 
----------------------------------- 
第3周 
本周开始日期:2013-9-9 
本周结束日期:2013-9-15 
----------------------------------- 
----------------------------------- 
第4周 
本周开始日期:2013-9-16 
本周结束日期:2013-9-22 
----------------------------------- 
----------------------------------- 
第5周 
本周开始日期:2013-9-23 
本周结束日期:2013-9-29 
----------------------------------- 
----------------------------------- 
第6周 
本周开始日期:2013-9-30 
本周结束日期:2013-9-30 
----------------------------------- 
******************************************* 
******************************************* 
月份:10 
days:31 
----------------------------------- 
第1周 
本周开始日期:2013-10-1 
本周结束日期:2013-10-6 
----------------------------------- 
----------------------------------- 
第2周 
本周开始日期:2013-10-7 
本周结束日期:2013-10-13 
----------------------------------- 
----------------------------------- 
第3周 
本周开始日期:2013-10-14 
本周结束日期:2013-10-20 
----------------------------------- 
----------------------------------- 
第4周 
本周开始日期:2013-10-21 
本周结束日期:2013-10-27 
----------------------------------- 
----------------------------------- 
第5周 
本周开始日期:2013-10-28 
本周结束日期:2013-10-31 
----------------------------------- 
******************************************* 
******************************************* 
月份:11 
days:30 
----------------------------------- 
第1周 
本周开始日期:2013-11-1 
本周结束日期:2013-11-3 
----------------------------------- 
----------------------------------- 
第2周 
本周开始日期:2013-11-4 
本周结束日期:2013-11-10 
----------------------------------- 
----------------------------------- 
第3周 
本周开始日期:2013-11-11 
本周结束日期:2013-11-17 
----------------------------------- 
----------------------------------- 
第4周 
本周开始日期:2013-11-18 
本周结束日期:2013-11-24 
----------------------------------- 
----------------------------------- 
第5周 
本周开始日期:2013-11-25 
本周结束日期:2013-11-30 
----------------------------------- 
******************************************* 
******************************************* 
月份:12 
days:31 
----------------------------------- 
第1周 
本周开始日期:2013-12-1 
本周结束日期:2013-12-1 
----------------------------------- 
----------------------------------- 
第2周 
本周开始日期:2013-12-2 
本周结束日期:2013-12-8 
----------------------------------- 
----------------------------------- 
第3周 
本周开始日期:2013-12-9 
本周结束日期:2013-12-15 
----------------------------------- 
----------------------------------- 
第4周 
本周开始日期:2013-12-16 
本周结束日期:2013-12-22 
----------------------------------- 
----------------------------------- 
第5周 
本周开始日期:2013-12-23 
本周结束日期:2013-12-29 
----------------------------------- 
----------------------------------- 
第6周 
本周开始日期:2013-12-30 

本周结束日期:2013-12-31

原文链接:http://www.open-open.com/lib/view/open1379859009867.html

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值