关于JAVA的
java.util.Calendar类里面的setFirstDayOfWeek()方法,我相信很多朋友都像我一样,误解了.认为设置了
setFirstDayOfWeek(Calendar.MONDAY),再通过
get(Calendar.DAY_OF_WEEK),如果是星期一的时候,就会返回一.这样想是
错误的.不管你把setFirstDayOfWeek()设置为星期几,
get(Calendar.DAY_OF_WEEK)都不是改变的.如果是星期一的话,永远返回都是2,对应的常量字锻Calendar.MONDAY是2.也就是说是星期一(MONDAY).
示例源码:
- package cn.eplato.test;
-
- import java.util.Calendar;
- import java.util.GregorianCalendar;
-
- public class Test {
-
- static final String[] weeks = new String[]{"星期天","星期一","星期二","星期三","星期四","星期五","星期六",};
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Calendar cale = new GregorianCalendar(2009,0,31);
- System.out.println(cale.getTime().toLocaleString());
- System.out.println("FirstDayOfWeek/tMinimalDaysInFirstWeek/tweek");
- for (int i = 1; i <= 7; i++) {
- cale.setFirstDayOfWeek(i);//1为星期天,7为星期六
- for (int j = 1; j <= 7; j++) {
- cale.setMinimalDaysInFirstWeek(j);
- System.out.println(weeks[(i-1)]+"/t"+j+"/t"+cale.get(Calendar.WEEK_OF_MONTH));
- }
-
- }
- }
-
- }
运行结果:
- 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
例如:
当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号第六周。
阅读(2854) | 评论(0) | 转发(0) |