如何使用类型为2015-01-13T10:24:55Z的java中的SimpleDateFormat来解析日期

Sah*_*nda 0 java simpledateformat

我有以下日期字符串来自Android应用程序中的grails服务.

2015-01-13T10:24:55Z
Run Code Online (Sandbox Code Playgroud)

现在我想解析这个字符串使用SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssz"); 但我在logcat中得到错误跟随错误.

01-13 10:53:50.674: W/System.err(1794): java.text.ParseException: Unparseable date: "2015-01-13T10:24:55Z" (at offset 10)
Run Code Online (Sandbox Code Playgroud)

请让我知道如何解析这种类型的字符串.

Jon*_*eet 6

目前您正在使用"通用时区"说明符.为了Z解释为"此值为UTC",您应该使用X:

new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX", Locale.US)
Run Code Online (Sandbox Code Playgroud)

X是ISO-8601时区说明符,包括ZUTC.

或者,您可以将其引用为文字,并将时区明确指定为UTC:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'",
                                               Locale.US);
format.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
Run Code Online (Sandbox Code Playgroud)

在这种情况下显式设置时区非常重要,否则将使用系统默认时区解析该值.