当前位置: 首页 > 面试题库 >

尝试对字符串进行日期解析时发生Java ParseException

龙飞
2023-03-14
问题内容

我很难解析/格式化从Web服务接收回的Date字符串。我尝试了多种方法,但是没有运气。

样本日期字符串:

2011-10-05T03:00:00Z

例外:

W/System.err(10072): java.text.ParseException: Unparseable date: "2011-10-05T05:00:00Z" (at offset 10)
W/System.err(10072):    at java.text.DateFormat.parse(DateFormat.java:626)

样例代码:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:SSSS");
Date date = formatter.parse(info.AiringTime);

我发现,如果删除日期和时间之间的“ T”并将其替换为空格,则格式正确。有人有什么建议吗?

-更新-

在深入研究API文档之后,我发现了这一点:

所有响应DateTime值均采用UTC格式。 您需要应用UTC偏移量来计算本地显示时间。

DateTime是以下列格式之一指定的日期和时间值:

UTC格式:YYYY-MM-DDThh:mm:ssZ。 例如:2011-03-15T02:00:00Z。

具有偏移的本地时间:YYYY-MM-DDThh:mm:ss +或-hh:mm(正或负偏移)。
例如,对于美国太平洋时间:2011-03-14T06:00:00 -08:00。

关于UTC格式的方法有什么建议吗?


问题答案:

您可以尝试:

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
String dateString = dateString.replace("Z", "GMT+00:00");
Date date = dateFormat.parse(dateString);

上面的代码应正确处理在日期中指定时区的情况。因为Z代表UTC /
GMT时区,所以它被GMT取代,因此SimpleDateFormat可以正确解释它(我想知道一种更干净的方式来处理这一位,如果有人知道的话)。



 类似资料:
  • 问题内容: 我正在尝试使用java解析JSON字符串。我不知道该怎么做,我在互联网上搜索了很多内容,但有了一些主意。有了我,我有构建代码,但它不起作用。当尝试执行我的代码时,它将引发错误。我无法解决错误。 看到下面是我的代码: 我的JSON字符串在该文件中: 当我执行代码时,它会引发如下错误: 请帮助我解决这个问题,在此先感谢 问题答案: 您的json在Java中解析错误。在Java中,最大值为

  • 本实例演示了如何通过DateFormat类的parse方法根据不同的本地环境解析日期/时间字符串,并将其转换成Date对象。在最后还演示了parse方法如何解析不符合日期/时间逻辑的字符串。 例子 : 解析日期/时间字符串 实例的代码如下: package chapter8; import java.text.DateFormat; import java.util.Date; import ja

  • 问题内容: 如何将类似“ 01-Jan-1995”的字符串解析为Python对象? 问题答案: 总体来说,您可以使用或模块中的函数来分析日期和时间字符串。您的示例可以解析为: 请注意,解析月份的名称是与语言环境相关的。下表显示了用于解析日期和时间的各种格式的指令。

  • 问题内容: 在Android应用程序中,我试图从字符串中解析日期,以发现两次之间的差异。 因此,我必须进行解析,以便获得格式,因此 但是我到了 所以我在做什么错了?如何在这里解析? 问题答案: 您需要将第二个MM(月)更改为mm(分钟):

  • 问题内容: 我的日期格式为“ yyyy-MM-dd’T’HH:mm:ss.sssZ”。例如,日期为“ 2018-07-17T09:59:51.312Z”。我正在使用下面的代码来解析Java中的String。 这给了我“无法解析的日期:”例外。谁能告诉我该怎么做? 问题答案: 您忘了在 那会做的工作

  • 问题内容: 我试图解析一个日期字符串,它是FTP服务器上文件的修改日期。以下是代码。 我在日志中得到这个 谁能帮我这个忙吗? 问题答案: String#substring(int index) 方法的javadoc 说: 子字符串以指定索引处的字符开头,并扩展到该字符串的末尾。 这就是您遇到的问题:您没有正确使用该方法,因为调用该方法时,您会收到另一个,该字符包含一个空格作为第一个字符,这就是解析