【发布时间】:2019-11-20 12:39:21
【问题描述】:
我想从用户那里获取时间和时区并创建一个条目。在日历 API 下使用来执行此操作,它适用于少数时区而不适用于少数时区
calendar.setTime(eventFormEntryBean.getStartDate());
TimeZone timeZone = TimeZone.getTimeZone("Europe/Amsterdam");
calendar.setTimeZone(timeZone);
工作时区(末尾+xx:xx)
- 太平洋/帕劳 2019-11-27T20:51:09.000+09:00
- IST - 2019-11-20T22:00:00.000+05:30
- 欧洲/阿姆斯特丹 - 2019-11-28T12:49:24.000+01:00
- 美国/洛杉矶 - 2019-11-20T21:32:49.000-08:00
非工作时区:-
- 非洲/达喀尔 - 2019-11-21T05:30:45.000Z
- 伦敦(欧洲/伦敦)- 2019-11-21T12:08:42.000Z
上述伦敦和非洲/达喀尔时区没有任何指示符来区分时区,只是在末尾指定“.000Z”。为了获得完整的时区,我们需要设置任何属性吗? .000z 是什么意思?
【问题讨论】:
-
两个“违规”时区与 GMT 的偏移量均为 0。所以这似乎是按要求工作。
Z基本上就是+00:00。此外,一般来说,时区偏移(例如+09:00)和时区(例如Pacific/Palau)之间没有1:1 的关系。许多不同的时区可以具有相同的偏移量,并且给定时区的偏移量可能会在一年中发生变化(感谢夏令时)。 -
Calendar和TimeZone类都设计得很糟糕而且已经过时了。我建议不要使用那些你使用 java.time,现代 Java 日期和时间 API。你需要ZoneId和ZonedDateTime。
标签: java jakarta-ee calendar