Chinaunix首页 | 论坛 | 博客
  • 博客访问: 48437
  • 博文数量: 7
  • 博客积分: 169
  • 博客等级: 入伍新兵
  • 技术积分: 85
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-23 18:20
文章分类

全部博文(7)

文章存档

2012年(7)

我的朋友

分类: Java

2012-11-25 22:28:25

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

点击(此处)折叠或打开

  1. package cn.eplato.test;
  2.   
  3. import java.util.Calendar;
  4. import java.util.GregorianCalendar;
  5.   
  6. public class Test {
  7.   
  8.     static final String[] weeks = new String[]{"星期天","星期一","星期二","星期三","星期四","星期五","星期六",};
  9.     /**
  10.      * @param args
  11.      */
  12.     public static void main(String[] args) {
  13.         // TODO Auto-generated method stub

  14.         Calendar cale = new GregorianCalendar(2009,0,31);
  15.         System.out.println(cale.getTime().toLocaleString());
  16.         System.out.println("FirstDayOfWeek/tMinimalDaysInFirstWeek/tweek");
  17.         for (int i = 1; i <= 7; i++) {
  18.             cale.setFirstDayOfWeek(i);//1为星期天,7为星期六

  19.             for (int j = 1; j <= 7; j++) {
  20.                 cale.setMinimalDaysInFirstWeek(j);
  21.                 System.out.println(weeks[(i-1)]+"/t"+j+"/t"+cale.get(Calendar.WEEK_OF_MONTH));
  22.             }
  23.   
  24.         }
  25.     }
  26.   
  27. }
运行结果:

点击(此处)折叠或打开

  1. Sat Jan 31 00:00:00 CST 2009
  2. FirstDayOfWeek MinimalDaysInFirstWeek week
  3. 星期天 1 5
  4. 星期天 2 5
  5. 星期天 3 5
  6. 星期天 4 4
  7. 星期天 5 4
  8. 星期天 6 4
  9. 星期天 7 4
  10. 星期一 1 5
  11. 星期一 2 5
  12. 星期一 3 5
  13. 星期一 4 5
  14. 星期一 5 4
  15. 星期一 6 4
  16. 星期一 7 4
  17. 星期二 1 5
  18. 星期二 2 5
  19. 星期二 3 5
  20. 星期二 4 5
  21. 星期二 5 5
  22. 星期二 6 4
  23. 星期二 7 4
  24. 星期三 1 5
  25. 星期三 2 5
  26. 星期三 3 5
  27. 星期三 4 5
  28. 星期三 5 5
  29. 星期三 6 5
  30. 星期三 7 4
  31. 星期四 1 5
  32. 星期四 2 5
  33. 星期四 3 5
  34. 星期四 4 5
  35. 星期四 5 5
  36. 星期四 6 5
  37. 星期四 7 5
  38. 星期五 1 6
  39. 星期五 2 5
  40. 星期五 3 5
  41. 星期五 4 5
  42. 星期五 5 5
  43. 星期五 6 5
  44. 星期五 7 5
  45. 星期六 1 6
  46. 星期六 2 6
  47. 星期六 3 5
  48. 星期六 4 5
  49. 星期六 5 5
  50. 星期六 6 5
  51. 星期六 7 5
先附上该月的日历:

setFirstDayOfWeek的方法意思只对WEEK_OF_MONTHWEEK_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) |
给主人留下些什么吧!~~