Date()对象不一致
现在是3/15/11,当我打电话给一个新的日期对象时:
Date now = new Date();
我将2月(getMonth()),2月(getDay())和year(getYear())的月份换算为111.这个约定有什么原因吗?
直接从课程文档中获取:
至于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使用示例。 日历使用的更多例子可以在这个页面上找到。
上一篇: Date() object inconsistency
下一篇: Compare two dates and get the difference in years, months, days