JAVA Calendar类setFirstDayOfWeek和setMinimalDaysInFirstWeek

转自:http://www.it165.net/pro/html/201211/4230.html

setFirstDayOfWeek()和setMinimalDaysInFirstWeek()方法只对Calendar中WEEK_OF_YEAR,WEEK_OF_MONTH有影响。

关于JAVA的java.util.Calendar类里面的setFirstDayOfWeek()方法,我相信很多朋友都像我一样,误解了.认为设置了setFirstDayOfWeek(Calendar.MONDAY),再通过get(Calendar.DAY_OF_WEEK),如果是星期一的时候,就会返回一.这样想是错误的.不管你把setFirstDayOfWeek()设置为星期几,get(Calendar.DAY_OF_WEEK)都不是改变的.如果是星期一的话,永远返回都是2,对应的常量字锻Calendar.MONDAY是2.也就是说是星期一(MONDAY).

示例源码:

01. package cn.eplato.test;
02.  
03. import java.util.Calendar;
04. import java.util.GregorianCalendar;
05.  
06. public class Test {
07.  
08. static final String[] weeks = new String[]{"星期天","星期一","星期二","星期三","星期四","星期五","星期六",};
09. /**
10. * @param args
11. */
12. public static void main(String[] args) {
13. // TODO Auto-generated method stub
14.  
15. Calendar cale = new GregorianCalendar(2009,0,31);
16. System.out.println(cale.getTime().toLocaleString());
17. System.out.println("FirstDayOfWeek/tMinimalDaysInFirstWeek/tweek");
18. for (int i = 1; i <= 7; i++) {
19. cale.setFirstDayOfWeek(i);//1为星期天,7为星期六
20.  
21. for (int j = 1; j <= 7; j++) {
22. cale.setMinimalDaysInFirstWeek(j);
23. System.out.println(weeks[(i-1)]+"/t"+j+"/t"+cale.get(Calendar.WEEK_OF_MONTH));
24. }
25.  
26. }
27. }
28.  
29. }

运行结果:

 

Sat Jan 31 00:00:00 CST 2009
FirstDayOfWeek MinimalDaysInFirstWeek week
星期天 1 5
星期天 2 5
星期天 3 5
星期天 4 4
星期天 5 4
星期天 6 4
星期天 7 4
星期一 1 5
星期一 2 5
星期一 3 5
星期一 4 5
星期一 5 4
星期一 6 4
星期一 7 4
星期二 1 5
星期二 2 5
星期二 3 5
星期二 4 5
星期二 5 5
星期二 6 4
星期二 7 4
星期三 1 5
星期三 2 5
星期三 3 5
星期三 4 5
星期三 5 5
星期三 6 5
星期三 7 4
星期四 1 5
星期四 2 5
星期四 3 5
星期四 4 5
星期四 5 5
星期四 6 5
星期四 7 5
星期五 1 6
星期五 2 5
星期五 3 5
星期五 4 5
星期五 5 5
星期五 6 5
星期五 7 5
星期六 1 6
星期六 2 6
星期六 3 5
星期六 4 5
星期六 5 5
星期六 6 5
星期六 7 5

 

先附上该月的日历:

 

setFirstDayOfWeek的方法意思只对WEEK_OF_MONTH与WEEK_OF_YEAR有作用.

WEEK_OF_MONTH:当前Calendar日期对象是当前月的第几周.

WEEK_OF_YEAR:当前Calendar 日期对象是当前年的第几周.

setMinimalDaysInFirstWeek的方法的作用是决定达到最少多少天才可以第一周才可以算一周,并记入WEEK_OF_MONTH

例如: www.it165.net

当setFirstDayOfWeek(1),星期第一天是星期天时.

1号前面的天数不算在第一周里面,如果是从星期天开始的,那么星期的最后一天是星期六.第一周只有3天.

第二周4号到10号.

第三周11号到17号.

第四周18号到24号.

第五周为25到31号.

如果设置setMinimalDaysInFirstWeek()为1-3,那么2009年1月31号是这第月的第五周.

如果设置setMinimalDaysInFirstWeek()为4-7,那么2009年1月31号是这第月的第四周,因为第一周不满4天。

一个月也可以有六周,例如:

setFirstDayOfWeek(7),即星期六为一周的开始,setMinimalDaysInFirstWeek()为1-2的时候,cale.get(Calendar.WEEK_OF_MONTH)等于6.此时:1-2算一周,3-9第二周,10-16第三周,17-23第四周,24-30,第五周,31号第六周。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值