如何使用Joda日期时间API 2.10.1解析印度时区中的日期时间字符串?

问题描述 投票:1回答:1
import org.joda.time.DateTime;
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) {
        DateTimeFormatter utcFormatter = DateTimeFormat.forPattern("EEE MMM dd HH:mm:ss zzz yyyy");
        DateTime dateTime1 = utcFormatter.parseDateTime("Thu Mar 28 12:26:50 UTC 2019");

        DateTimeZone istZone = DateTimeZone.forID("Asia/Kolkata");
        DateTimeFormatter istFormatter = utcFormatter.withZone(istZone);
        String dtstrIndiaTimezone = istFormatter.print(dateTime1);
        System.out.println(dtstrIndiaTimezone);

        DateTime dateTime2 = istFormatter.parseDateTime(dtstrIndiaTimezone);// throws exception
        // System.out.println(dateTime2);
    }
}

执行上面给出的代码会在IST中显示日期时间字符串,但是在尝试解析时会抛出以下异常:

Thu Mar 28 17:56:50 IST 2019
Exception in thread "main" java.lang.IllegalArgumentException: Invalid format: "Thu Mar 28 17:56:50 IST 2019" is malformed at "IST 2019"
    at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:945)
    at Main.main(Main.java:16)

如何做? API中的错误吗?

注意:我知道如何使用java.time类来做到这一点。

java datetime jodatime
1个回答
0
投票

对不起,你不能。该文档说:

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

来自the documentation of DateTimeFormat

© www.soinside.com 2019 - 2024. All rights reserved.