思路:首先是获取该月的实际天数,然后从1号遍历直至该月最后一天,利用Calendar类找出该日是一周中的第几天,
(1)若该日是周六,则视为一周结束,并用该日期减去6找到该周的开始日期,若相减结果小于等于1,则说明该周起始日期应该是本月1号。
(1)若该日不是周六,且是该月最后一天,则应该在上面计算的基础上再加一周,视月末为该周的结束日,该周起始日期应为改日期减去改日
在一周中的位置加1,例如:2017-01-29号是周日,则视为1月份中的第5周,开始日期是31-3+1
提示:Calendar 类中视周日为一周的开始,值是1
示例代码:
package com.metro.crm.bean;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class test {
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 == 7) {// 若当天是周6
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 != 7 && i == days) {// 若是本月最好一天,且不是周日
count++;
System.out.println("-----------------------------------");
System.out.println("第" + count + "周");
System.out.println("本周开始日期:" + date + "-" + (i - k + 1));
System.out.println("本周结束日期:" + date + "-" + i);
System.out.println("-----------------------------------");
}
}
}
public static void main(String[] args) throws Exception {
String s = "2017-";
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周
本周开始日期:2017-1-1
本周结束日期:2017-1-7
第2周
本周开始日期:2017-1-8
本周结束日期:2017-1-14
第3周
本周开始日期:2017-1-15
本周结束日期:2017-1-21
第4周
本周开始日期:2017-1-22
本周结束日期:2017-1-28
第5周
本周开始日期:2017-1-29
本周结束日期:2017-1-31
月份:2
days:28
第1周
本周开始日期:2017-2-1
本周结束日期:2017-2-4
第2周
本周开始日期:2017-2-5
本周结束日期:2017-2-11
第3周
本周开始日期:2017-2-12
本周结束日期:2017-2-18
第4周
本周开始日期:2017-2-19
本周结束日期:2017-2-25
第5周
本周开始日期:2017-2-26
本周结束日期:2017-2-28
月份:3
days:31
第1周
本周开始日期:2017-3-1
本周结束日期:2017-3-4
第2周
本周开始日期:2017-3-5
本周结束日期:2017-3-11
第3周
本周开始日期:2017-3-12
本周结束日期:2017-3-18
第4周
本周开始日期:2017-3-19
本周结束日期:2017-3-25
第5周
本周开始日期:2017-3-26
本周结束日期:2017-3-31
月份:4
days:30
第1周
本周开始日期:2017-4-1
本周结束日期:2017-4-1
第2周
本周开始日期:2017-4-2
本周结束日期:2017-4-8
第3周
本周开始日期:2017-4-9
本周结束日期:2017-4-15
第4周
本周开始日期:2017-4-16
本周结束日期:2017-4-22
第5周
本周开始日期:2017-4-23
本周结束日期:2017-4-29
第6周
本周开始日期:2017-4-30
本周结束日期:2017-4-30
月份:5
days:31
第1周
本周开始日期:2017-5-1
本周结束日期:2017-5-6
第2周
本周开始日期:2017-5-7
本周结束日期:2017-5-13
第3周
本周开始日期:2017-5-14
本周结束日期:2017-5-20
第4周
本周开始日期:2017-5-21
本周结束日期:2017-5-27
第5周
本周开始日期:2017-5-28
本周结束日期:2017-5-31
月份:6
days:30
第1周
本周开始日期:2017-6-1
本周结束日期:2017-6-3
第2周
本周开始日期:2017-6-4
本周结束日期:2017-6-10
第3周
本周开始日期:2017-6-11
本周结束日期:2017-6-17
第4周
本周开始日期:2017-6-18
本周结束日期:2017-6-24
第5周
本周开始日期:2017-6-25
本周结束日期:2017-6-30
月份:7
days:31
第1周
本周开始日期:2017-7-1
本周结束日期:2017-7-1
第2周
本周开始日期:2017-7-2
本周结束日期:2017-7-8
第3周
本周开始日期:2017-7-9
本周结束日期:2017-7-15
第4周
本周开始日期:2017-7-16
本周结束日期:2017-7-22
第5周
本周开始日期:2017-7-23
本周结束日期:2017-7-29
第6周
本周开始日期:2017-7-30
本周结束日期:2017-7-31
月份:8
days:31
第1周
本周开始日期:2017-8-1
本周结束日期:2017-8-5
第2周
本周开始日期:2017-8-6
本周结束日期:2017-8-12
第3周
本周开始日期:2017-8-13
本周结束日期:2017-8-19
第4周
本周开始日期:2017-8-20
本周结束日期:2017-8-26
第5周
本周开始日期:2017-8-27
本周结束日期:2017-8-31
月份:9
days:30
第1周
本周开始日期:2017-9-1
本周结束日期:2017-9-2
第2周
本周开始日期:2017-9-3
本周结束日期:2017-9-9
第3周
本周开始日期:2017-9-10
本周结束日期:2017-9-16
第4周
本周开始日期:2017-9-17
本周结束日期:2017-9-23
第5周
本周开始日期:2017-9-24
本周结束日期:2017-9-30
月份:10
days:31
第1周
本周开始日期:2017-10-1
本周结束日期:2017-10-7
第2周
本周开始日期:2017-10-8
本周结束日期:2017-10-14
第3周
本周开始日期:2017-10-15
本周结束日期:2017-10-21
第4周
本周开始日期:2017-10-22
本周结束日期:2017-10-28
第5周
本周开始日期:2017-10-29
本周结束日期:2017-10-31
月份:11
days:30
第1周
本周开始日期:2017-11-1
本周结束日期:2017-11-4
第2周
本周开始日期:2017-11-5
本周结束日期:2017-11-11
第3周
本周开始日期:2017-11-12
本周结束日期:2017-11-18
第4周
本周开始日期:2017-11-19
本周结束日期:2017-11-25
第5周
本周开始日期:2017-11-26
本周结束日期:2017-11-30
月份:12
days:31
第1周
本周开始日期:2017-12-1
本周结束日期:2017-12-2
第2周
本周开始日期:2017-12-3
本周结束日期:2017-12-9
第3周
本周开始日期:2017-12-10
本周结束日期:2017-12-16
第4周
本周开始日期:2017-12-17
本周结束日期:2017-12-23
第5周
本周开始日期:2017-12-24
本周结束日期:2017-12-30
第6周
本周开始日期:2017-12-31
本周结束日期:2017-12-31