为什么Joda DateTimeFormatter无法解析时区名称('z')

dim*_*sli 18 java jodatime

来自DateTimeFormatter javadoc:

区域名称:无法解析时区名称('z').

因此时区解析如下:

System.out.println(new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy").parse("Fri Nov 11 12:13:14 JST 2010"));
Run Code Online (Sandbox Code Playgroud)

在Joda无法做到:

DateTimeFormatter dtf = DateTimeFormat.forPattern("EEE MMM dd HH:mm:ss z yyyy");
System.out.println(dtf.parseDateTime("Fri Nov 11 12:13:14 JST 2010"));
//Exception in thread "main" java.lang.IllegalArgumentException: Invalid format: "Fri Nov 11 12:13:14 JST 2010" is malformed at "JST 2010"
//at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:673)
Run Code Online (Sandbox Code Playgroud)

Ste*_*n C 14

我认为原因是'z'时区名称是传统的(不标准化)和含糊不清的; 即根据您的原籍国,它们意味着不同的东西.例如,"PST"可以是"太平洋标准时间"或"巴基斯坦标准时间".

如果您有兴趣,这个网站有一个包含大量时区名称的列表.发现存在歧义的案例并不困难.


jar*_*bjo 5

可能是因为某些时区缩写是不明确的,并且解析器无法知道哪个时区是什么意思.

它当然也可能是你在与Joda合作一段时间后发现的微小,奇怪的嘀嗒声和缺失的功能之一.