【发布时间】:2013-01-22 05:02:12
【问题描述】:
我一直在使用java.util 来表示所有日期和日历。但我在这里面临一个奇怪的问题。 Calendar.MONTH、Calendar.DAY_OF_MONTH 等都给出错误的输出。但是当我使用Calendar.getTime() 时,我得到了正确的输出。可能是什么问题?
public class TestClass {
public static void main(String[] args) {
Calendar rightNow = Calendar.getInstance();
System.out.println(rightNow.MONTH);
System.out.println(rightNow.DAY_OF_MONTH);
System.out.println(rightNow.YEAR);
System.out.println(rightNow.getTime());
}
}
同样的输出是:
2
5
1
Tue Jan 22 10:31:44 GMT+05:30 2013
【问题讨论】:
-
使用 Java 日历时,请注意您直觉上期望为 1 索引的事物,例如月份,实际上是 0 索引。 docs.oracle.com/javase/1.5.0/docs/api/java/util/…
-
我根本不懂 Java,但那些看起来像位置常量...
-
Calendar类存在一系列设计问题,您只遇到了其中一个问题。虽然在 2013 年使用它是合理的,但它在第二年被ZonedDateTime和 java.time, the modern Java date and time API 的其他类取代。所以现在不要再使用Calendar了。 -
仅供参考,非常麻烦的旧日期时间类,例如
java.util.Date、java.util.Calendar和java.text.SimpleDateFormat现在是 legacy,被 Java 8 中内置的 java.time 类所取代,之后。见Tutorial by Oracle。