import org.joda.time.DateTimeZone;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
System.out.println(
DateTimeZone.forID("Europe/Copenhagen")
);
DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm dd MM YY Z");
System.out.println(
formatter.parseDateTime("19:30 29 8 11 Europe/Copenhagen")
);
}
}
我希望它能解析哥本哈根时区的日期,但它失败了:
Europe/Copenhagen
Exception in thread "main" java.lang.IllegalArgumentException: Invalid format: "19:30 29 8 11 Europe/Copenhagen" is malformed at "Europe/Copenhagen"
at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:683)
at Main.main(Main.java:13)
为什么?
最佳答案
查看 JodaTime DateTimeFormat javadocs对于 DateTimeFormat
,您应该使用 ZZZ
而不是 Z
。
很容易错过,因为该文档中的表格只显示 Z。页面下方是这样的,“Zone: 'Z' outputs offset without a colon, 'ZZ' outputs the offset with a colon, 'ZZZ'或更多输出区域 ID。”
关于java - Joda 时区与地区/城市解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6973388/