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); } </pre>
輸出結果:
***
月份: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
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!