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

标签 java simpledateformat

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

2015-01-13T10:24:55Z

现在我想使用 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)

请告诉我如何解析这种类型的字符串。

最佳答案

当前您正在使用“常规时区”说明符。为了将 Z 解释为“该值采用 UTC”,您应该使用 X:

new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX", Locale.US)

X 是 ISO-8601 时区说明符,其中包括表示 UTC 的 Z

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

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

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

关于java - 如何在类型为2015-01-13T10 :24:55Z的java中使用SimpleDateFormat解析日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27920693/

相关文章:

java - Firebase 存储 - 用户没有权限

java - keyPressed() 方法在哪个线程中调用?

java - Java 中的 String.contains

android - SimpleDateFormat 解析器

java - Bukkit/Spigot API : Mapping damager and Victim

java - 我无法删除耶拿中的数据类型属性值

java - 仅从文本字段获取特定信息

java - 从 TextView 获取 Unix 时间

java - Android TextView中的阿拉伯日期显示

java - SimpleDateFormat 仅限于预定义日期