android - 解析日期异常 - 无法解析的日期

标签 android date simpledateformat

我觉得这是一个微不足道的问题,但我没有发现任何问题:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
String strDate = "2014-12-07T13:35:08.030Z";
try
{
    return format.parse(strDate);
}
catch (ParseException e)
{
    e.printStackTrace();
    Log.e("Problem with formatting date", strDate);
}

我得到 java.text.ParseException: Unparseable date: "2014-12-07T13:35:08.030Z"(at offset 19)

知道这里还有什么问题吗?

最佳答案

根据documentation Android-SimpleDateFormat 似乎不支持 Z 符号(它不是文字而是有效的 ISO 标识符和 UTC+00:00 的同义词)。

因此模式符号 Z 只能理解 -0800 之类的偏移量,而不能理解“Z”。仅仅使用撇号是不够的解决方法。如果您的输入以“Z”结尾,您还需要将时区明确设置为 UTC 各自的 GMT+00:00。类似的东西(未测试):

String input = "2014-12-07T13:35:08.030Z";
SimpleDateFormat format;

if (input.endsWith("Z")) {
  format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
  format.setTimeZone(TimeZone.getTimeZone("GMT"));
} else {
  format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
}

try {
    return format.parse(input);
} catch (ParseException e) {
    e.printStackTrace();
    Log.e("Problem with formatting date", input);
}

关于android - 解析日期异常 - 无法解析的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27457843/

相关文章:

android - Kotlin 协程、改造、Android

java - 收集一段时间内每个月的天数

mysql - 添加/减去月份时mysql中的奇怪时间计算

java - 如何从给定的 Instant 获取第二天结束的日期时间? ( java )

Android SimpleDateFormat 无法解析日期时间(在 sun 1.6 jre 上工作正常)

android - 带有电话号码的短信发送消息

java - ViewPager fragment 中的 SwipeToRefresh 布局问题

android - 为什么上下文菜单在 "Notepad"教程中不起作用?

java - 简单日期格式 24 小时

java - 如何使用 SimpleDateFormat 格式化日期