1

现在是 3/15/11,当我调用一个新的日期对象时:

Date now = new Date();

我得到回报

  • 月份为 2 ( getMonth()),
  • 日期为 2 ( getDay())
  • 年份 ( getYear()) 为 111。

这个约定有什么理由吗?

4

3 回答 3

3

直接来自类的文档

  • 年份 y 由整数 y - 1900 表示。
  • 一个月用 0 到 11 的整数表示;0 是一月,1 是二月,以此类推;因此 11 是 12 月。
  • 日期(月中的某天)通常以 1 到 31 的整数表示。

至于getDay()

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

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

于 2011-03-16T02:05:28.020 回答
2

这个约定有什么理由吗?

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

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

这些CalendarAPI 是对 的重大改进Date,但迄今为止在 Java 中处理日期/时间值的最佳 API 是 3rd-party Joda 时间API。


如果您想要 Joda 时间使用示例,请查看上面的链接。GregorianCalendarjavadocs中有一个使用日历的示例。更多日历使用示例可在此页面上找到。

于 2011-03-16T02:12:14.633 回答
1
于 2019-04-12T21:27:44.383 回答