我一直使用 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
Calendar
类存在许多设计问题,你只是碰巧遇到了其中之一。虽然在2013年使用它是合理的,但在接下来的一年中,它被ZonedDateTime
和其他来自java.time,现代Java日期和时间API的类所取代。因此,现在永远不要再使用Calendar
了。 - Ole V.V.java.util.Date
、java.util.Calendar
和java.text.SimpleDateFormat
这样的旧日期时间类现在已经成为遗留系统,被内置于Java 8及更高版本中的java.time类所取代。请参阅Oracle的教程。 - Basil Bourque