Date()对象不一致

现在是3/15/11,当我打电话给一个新的日期对象时:

Date now = new Date();

我将2月(getMonth()),2月(getDay())和year(getYear())的月份换算为111.这个约定有什么原因吗?


直接从课程文档中获取:

  • y年用整数y - 1900表示。
  • 一个月由0到11之间的一个整数表示; 0是1月,1是2月,等等; 因此11月是12月。
  • 日期(月中的一天)以通常的方式表示为从1到31的整数。
  • 至于getDay()

    返回此日期所代表的星期几。 返回的值(0 =星期日,1 =星期一,2 =星期二,3 =星期三,4 =星期四,5 =星期五,6 =星期六)表示包含该时间点或以该时间点开始的星期几日期对象,如本地时区中所解释的。

    2011年3月15日事实上是一个星期二。


    这个惯例有什么原因吗?

    原因在于它是Date指定的javadoc; 请参阅@matt b的答案。

    Date API是在JDK 1.0的日子里创建的,并且众所周知在很多领域都存在问题。 这就是为什么大多数日期方法被标记为已弃用。 (顺便说一下,这意味着建议您不要在新代码中使用它们!)

    Calendar API是Date上的一项重大改进,但Java中处理日期/时间值的最佳API是第三方Joda时间API。


    如果你想要使用Joda时间的例子,请看上面的链接。 GregorianCalendar javadocs中有一个Calendar使用示例。 日历使用的更多例子可以在这个页面上找到。

    链接地址: http://www.djcxy.com/p/36715.html

    上一篇: Date() object inconsistency

    下一篇: Compare two dates and get the difference in years, months, days