在查看几个现有帖子之后,我仍然无法使我的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:Unparseable date:
06-09 23:52:17.478:DEBUG / DEBUG(2436):Wed,08 Jun 2011 03:23:55 -0500
设置了区域设置,模式看起来没问题。我哪里错了?
答案 0 :(得分:4)
以下是解决方案:
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 ++的字符。然而,显然有一些东西现在正在发挥作用。
感谢您的帮助!
答案 1 :(得分:3)
检查您的输入是否有非打印字符,如标签(而不是空格)等。有时它无法解析的原因与数字的格式化有很大关系,与意外事件有很大关系字符(你不能总是看到)。
考虑到有些人已经报道“为我工作”(@Thanks Bozho!)我强烈怀疑你的输入字符串中有不可打印的字符。谁知道,你可能在某处嵌入了垂直标签!