1

我正在尝试将以下 str 解析为日期:

2013-10-23T11:00:00EDT

我正在使用以下方法:

String TIMEZONE_DATE_TIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ssz";
Date date = new SimpleDateFormat(TIMEZONE_DATE_TIME_FORMAT, Locale.US).parse(strDate);

它在大多数设备上运行良好,但在某些设备上会引发以下异常:

java.text.ParseException: Unparseable date: "2013-10-23T11:00:00EDT" (at offset 19)

有人可以解释为什么吗?

4

1 回答 1

1

试试这个代码。这可以帮助您修复异常

SimpleDateTime format = new SimpleDateTime("yyyy-MM-dd'T'HH:mm:ssX", Locale.US);
Date date = format.parse(text);

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZ")
                                            .withLocale(Locale.US);
DateTime dateTime = formatter.parseDateTime(text);

事实上,有一个ISODateTimeFormat类可以让这变得更简单:

DateTimeFormatter formatter = ISODateTimeFormat.dateTimeNoMillis();
于 2013-10-23T16:02:12.370 回答