【发布时间】:2020-11-28 09:49:14
【问题描述】:
我在 java 中使用 Calendar 类并且遇到了麻烦。我有这个代码
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("NZST"));
System.out.println("Calendar.HOUR_OF_DAY = " + calendar.get(Calendar.HOUR_OF_DAY));
System.out.println("Calendar.HOUR = " + calendar.get(Calendar.HOUR));
System.out.println("calendar.getTime() = " + calendar.getTime());
我希望它能够输出
Calendar.HOUR_OF_DAY = 17
Calendar.HOUR = 5
calendar.getTime() = Sat Aug 08 17:45:53 NZST 2020
而是输出
Calendar.HOUR_OF_DAY = 5
Calendar.HOUR = 5
calendar.getTime() = Sat Aug 08 17:45:53 NZST 2020
那么为什么 HOUR_OF_DAY 和 HOUR 返回相同的东西,但是 calendar.getTime() 显示了正确的 HOUR_OF_DAY。他们都在使用 NZST。
【问题讨论】:
-
我建议你不要使用
Calendar和TimeZone。这些课程设计不佳且早已过时。而是使用来自java.time, the modern Java date and time API 的ZonedDateTime和ZoneId。见the answer by Basil Bourque。
标签: java calendar java.util.calendar java-calendar