让我们看一下下面的Java代码片段。

package demo;

import java.util.Calendar;

final public class Main
{
    public static void main(String[] args)
    {
        Calendar cal = Calendar.getInstance();
        cal.set(2011, 11, 11);   //Setting a date to itself.

        System.out.println(cal.get(Calendar.YEAR) + " "

        + cal.get(Calendar.WEEK_OF_YEAR) + "

       " + cal.get(Calendar.DAY_OF_YEAR));
    }
}




在上面的简单代码中,我使用方法cal.set(2011, 11, 11);临时(明确地)将当前日期设置为2011-11-11。因此,我得到了输出2011 51 345,当前年份2011,年份51的星期和日期345的日期。



当我在cal.set(2011, 11, 11);这一行上留下评论时,得到的结果分别为:当年2011 46 315,当年当前周和当年当前日,与先前的结果有所不同。

[这里,我没有设定任何日期。上面代码中的语句cal.set(2011, 11, 11);已被注释掉,系统自动检索当前日期为2011-11-11]。



在这两种情况下,都使用相同的日期,即2011-11-11,但两种情况下获得的结果均不同。为什么?

最佳答案

月份值从0开始。如果您的意思是十一月,请使用:

cal.set(2011, 10, 11);


请参见Calendar javadocs。

关于java - 关于Java日历的一种情况,其中显式设置日期会导致一些不同的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8098298/

10-13 09:11