Joda DateTimeFormat 时区列表
Joda DateTimeFormat list of timezones
我刚刚发现 CET 不是 Joda 时间的有效时区:
DateTimeFormatter DATE_TIME_FORMATTER =
DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss.SSS z");
DateTime.parse("25/11/2016 11:50:00.000 CET", DATE_TIME_FORMATTER)`
-> java.lang.IllegalArgumentException: Invalid format: "25/11/2016 11:50:00.000 CET" is malformed at "CET"`
DateTime.parse("25/11/2016 11:50:00.000 PST", DATE_TIME_FORMATTER)`
-> OK
官方时区列表是什么? CET 是 java.util.Calendar 的有效值,但在 Joda 中显然不是。 documentation 不多说了。
您引用的文档还说:
Zone names: Time zone names ('z') cannot be parsed.
否则,如果您使用 DateTimeFormatterBuilder
,那么您可以使用它的方法 appendTimeZoneName(Map<String,DateTimeZone>) with specifying a lookup-map. By default, this lookup-map is given by the helper method DateTimeUtils.getDefaultTimeZoneNames(),它只会产生一些位于美国的时区的英文名称:
•UT - UTC
•UTC - UTC
•GMT - UTC
•EST - America/New_York
•EDT - America/New_York
•CST - America/Chicago
•CDT - America/Chicago
•MST - America/Denver
•MDT - America/Denver
•PST - America/Los_Angeles
•PDT - America/Los_Angeles
解决方案: 定义包含字符串 "CET" 的自己的查找映射,或使用更好的时区名称解析库(例如:Java-8 又名 java.time-package 做得更好)。
我刚刚发现 CET 不是 Joda 时间的有效时区:
DateTimeFormatter DATE_TIME_FORMATTER =
DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss.SSS z");
DateTime.parse("25/11/2016 11:50:00.000 CET", DATE_TIME_FORMATTER)`
-> java.lang.IllegalArgumentException: Invalid format: "25/11/2016 11:50:00.000 CET" is malformed at "CET"`
DateTime.parse("25/11/2016 11:50:00.000 PST", DATE_TIME_FORMATTER)`
-> OK
官方时区列表是什么? CET 是 java.util.Calendar 的有效值,但在 Joda 中显然不是。 documentation 不多说了。
您引用的文档还说:
Zone names: Time zone names ('z') cannot be parsed.
否则,如果您使用 DateTimeFormatterBuilder
,那么您可以使用它的方法 appendTimeZoneName(Map<String,DateTimeZone>) with specifying a lookup-map. By default, this lookup-map is given by the helper method DateTimeUtils.getDefaultTimeZoneNames(),它只会产生一些位于美国的时区的英文名称:
•UT - UTC
•UTC - UTC
•GMT - UTC
•EST - America/New_York
•EDT - America/New_York
•CST - America/Chicago
•CDT - America/Chicago
•MST - America/Denver
•MDT - America/Denver
•PST - America/Los_Angeles
•PDT - America/Los_Angeles
解决方案: 定义包含字符串 "CET" 的自己的查找映射,或使用更好的时区名称解析库(例如:Java-8 又名 java.time-package 做得更好)。