无法将UTC日期时间解析为EST当地时间

时间:2016-09-09 03:14:30

标签: java date datetime utc

在将UTC日期时间解析为EST当地时间时获得以下异常。

例外:

Stacktrace:] with root cause
 java.text.ParseException: Unparseable date: "2016-09-09T03:00:29Z"
    at java.text.DateFormat.parse(DateFormat.java:357)
    at com.study.crud.util.GenericUtils.convertUTCDateToEST(GenericUtils.java:55)

GenericUtils.java

public static String convertUTCDateToEST(String utcDate) throws ParseException {
        SimpleDateFormat inFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
        inFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
        Date aDate = inFormat.parse(utcDate);

        DateFormat outFormat = new SimpleDateFormat("yyyy-MM-dd HH:MI:SS");
        outFormat.setTimeZone(TimeZone.getTimeZone("EST"));
        String estDate = outFormat.format(aDate);

        return estDate;
    }

在这里发现了一些类似的东西java.text.ParseException: Unparseable date "yyyy-MM-dd'T'HH:mm:ss.SSSZ" - SimpleDateFormat并尝试了那里提出的解决方案,但没有用。

2 个答案:

答案 0 :(得分:1)

输入格式有错误。您已指定毫秒作为格式.SSS的输入,然后指定区域Z.

但是你没有通过毫秒的选择。以下格式适用

SimpleDateFormat inFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");

答案 1 :(得分:0)

这是因为输入中没有millisecond部分时间:

"2016-09-09T03:00:29Z" 
                    ^ unmatched place

您可以通过添加缺失的部分(2016-09-09T03:00:29.000Z)来修改输入,也可以相应地更改格式模式(yyyy-MM-dd'T'HH:mm:ss'Z')。

此外,输出格式中存在拼写错误(时间的一小部分):

  

" yyyy-MM-dd HH:MI:SS"

应将其替换为yyyy-MM-dd HH:mm:ss