java - 由于时区 : Invalid format 导致 Joda 时间异常

标签 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)

我不明白 - 当我使用它来将字符串解析为日期时间时,用于格式化日期时间对象的格式化程序模式失败。这是 Joda-Time 中的错误还是预期行为?

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

谢谢。

最佳答案

正如 DateTimeFormat 的文档中所述:

Time zone names ('z') cannot be parsed.

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

关于java - 由于时区 : Invalid format 导致 Joda 时间异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18834270/

相关文章:

java - java中bean对象列表按字母升序排序

java - 从某个日期到当前日期的日期列表

java - 自定义序列化 joda LocalDate 的有效方法

java - 无法将类型 : value: java. sql.Timestamp 转换为 org.joda.time.DateTime

spring - 如何为 Joda Period 注入(inject)配置值

java - 如何在使用 Web 服务时获取 session 对象?

java - 使用Processing 3.3.7处理图像时出现奇怪的输出

java - Servlet 代码中的结果集处理错误

java - 如何从父类(super class)继承接口(interface)

java - Spring 4.1.3注册ObjectMapper序列化Joda DateTime