问题描述:取某一天是一周的第几天?        Calendar cal2 = Calendar.getInstance();
        System.out.println(cal2.getTime());
        cal2.clear();
        cal2.set(100, 0, 1);
        System.out.println(cal2.getTime());
        cal2.clear();
        cal2.set(1, 0, 1);
        System.out.println(cal2.getTime());得到的结果是:
Fri Jan 04 08:54:12 CST 2008
Wed Jan 01 00:00:00 CST 100
Sat Jan 01 00:00:00 CST 1问题:第一个是正确的,2008/1/4 是星期五正确的, 100/1/1 是星期三 正确吗?(星期三应该不正确,经过多次在别的中间的验证),在别的语言中算出来的是星期五,1/1/1 是星期六还是星期一?请问一下这是jdk的bug还是我对日期的理解存在偏差。

解决方案 »

  1.   

    setGregorianChange
    public void setGregorianChange(Date date)设置 GregorianCalendar 的更改日期。这是发生从儒略历日期切换到格里高利历日期的点。默认时间是 1582 年 10 月 15 日(格里高利历)。在此之前,日期是按照儒略历计算的。 
    要得到纯粹的儒略历日历,可将更改日期设置为 Date(Long.MAX_VALUE)。要得到一个纯粹的格里高利历日历,可将更改日期设置为 Date(Long.MIN_VALUE)。 
      

  2.   

    晕那个被删除了 再回次Fri Jan 04 09:38:15 CST 2008
    Wed Jan 01 00:00:00 CST 0100
    Sat Jan 01 00:00:00 CST 0001
    我运行lz程序的结果
    没有错误啊 100/1/1就是周3
    公元元年的第一天更是无疑问的周6
      

  3.   

    谢谢了,按照纯粹的格里高利历日历公元元年的第一天是周一 ,在java里面还是要进行设置的,setGregorianChange ,今天不能加分,明天加了,呵呵
      

  4.   

    JDK没有Bug,这个是历法造成的1752年9月只有19天的!
          九月 1752
    日 一  二  三 四  五 六
           1  2 14 15 16
    17 18 19 20 21 22 23
    24 25 26 27 28 29 30
      

  5.   

    哦,明白了,谢谢ChDw ,wunan320 了