由于时区导致的Joda-Time异常:格式无效

时间:2013-09-16 17:52:42

标签: java jodatime

使用joda-time 2.3,我也试图解析具有时区信息的日期时间值。

以下是我的代码 -

import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

public class App {
    public static void main(String[] args) {
        DateTime dt = new DateTime();
        DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy/MM/dd hh:mm:ss a z");
        String str = formatter.print(dt);
        System.out.println(str);

        DateTime date = formatter.parseDateTime(str);
        System.out.println(date);
    }
}

pom.xml -

<dependency>
    <groupId>joda-time</groupId>
    <artifactId>joda-time</artifactId>
    <version>2.3</version>
</dependency>

输出 -

2013/09/16 11:15:03 PM IST
Exception in thread "main" java.lang.IllegalArgumentException: Invalid format: "2013/09/16 11:15:03 PM IST" is malformed at "IST"
    at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:873)
    at com.cmcltd.servermon.App.main(App.java:15)

我不明白 - 当我使用它将String解析为DateTime时,用于格式化DateTime对象的格式化程序模式失败。这是Joda-Time或预期行为中的错误吗?

我可以使用什么格式模式来解析输入日期“2013/09/16 11:15:03 PM IST”?

感谢。

1 个答案:

答案 0 :(得分:2)

正如DateTimeFormat的文档中所述:

  

无法解析时区名称('z')。

查看Why Joda DateTimeFormatter cannot parse timezone names ('z')以找出原因