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

SimpleDateFormat:无法解析的日期异常

司徒浩思
2023-03-14
问题内容

在照顾了几个现有的帖子之后,我仍然无法使我的SimpleDateFormat解析器正常工作。这是代码:

SimpleDateFormat df = new SimpleDateFormat(
    "EEE, dd MMM yyyy HH:mm:ss Z", Locale.US);
try {
    volcanoListDate = df.parse(currentValue);
} catch (ParseException e) {
    Log.d("DEBUG", e.toString());
    Log.d("DEBUG", currentValue);
}

我总是以ParseException结尾。这是调试消息的输出:

06-09 23:52:17.478:DEBUG /
DEBUG(2436):java.text.ParseException:无法解析的日期:06-09
23:52:17.478:DEBUG / DEBUG(2436):2011年6月8日星期三03:23: 55 -0500

区域设置和模式看起来还可以。我哪里错了?


问题答案:

解决方法如下:

            SimpleDateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", Locale.US);
        try {
            volcanoListDate = df.parse(currentValue.replaceAll("\\p{Cntrl}", ""));
        } catch (ParseException e) {
            Log.d("VOLCANO_DEBUG", e.toString());
            Log.d("VOLCANO_DEBUG", currentValue);
        }

重要的更改是 .replaceAll(“ \\ p {Cntrl}”,“”)
,它从解析的字符串中删除控制字符。奇怪的是,在字符串来自的xml中,我没有在Notepad ++中看到任何这些字符。但是,显然有东西正在运行。

感谢您的所有帮助!



 类似资料:
  • 问题内容: 代码如下所示: 在上面的代码中,抛出不可解析的日期异常: 我不知道原因。 问题答案: 为什么要将日期转换为字符串并将其解析回日期? 代码失败的原因是因为您试图使用仅接受dd-MMM-yyy格式的日期的格式化程序转换完整日期。

  • 问题内容: 我正在尝试使用解析日期时间字符串,但我一直收到不可解析的日期异常。 这是我尝试解析的日期格式: 这是我正在使用的代码: 返回此错误: 据我所知,这是使用SimpleDateFormat类的正确方法,但是我不精通Java,所以我可能会弄错。有人知道我的问题是什么吗? 问题答案: 时区应为GMT-08:00或-0800(如Madcore Tom所说)。请参阅Java文档。 在Java 7中

  • 问题内容: 我目前正在从事一些简单的项目,并且在以下字符串中有日期: 并希望将此字符串转换为对象。我正在使用以下代码行来做到这一点。我搜索了站点,找到了解决方法: 但是我可能做错了,因为我总是会遇到异常: 这似乎是我正在使用的模式的问题,但尝试了不同的模式,但没有任何效果。 问题答案: 某些字段(例如,星期几字段和/或AM / PM标记)可能与您的默认字段不匹配。具有方法getErrorOffse

  • 问题内容: 如果能找到有关此异常的错误的帮助,我将不胜感激: 和以下代码: 它用引发异常。 ,作为例外。 谢谢。 问题答案: 代表时区字符。需要引用:

  • 我尝试将字符串转换为日期。

  • 例如,我得到了这个日期字符串: 看起来Android无法解析某些时区。感谢@Burhanuddin Rashid的这种方法。 此处的解决方案:不可更改的日期:“IST 2014年星期五10月10日23:11:07”(偏移量20)