我使用带有模式 EEE MM/dd hh:mma
的 SimpleDateFormat,传入日期字符串 Thu 10/9 08:15PM
并且它抛出一个 Unparseable日期异常。为什么?我之前在 SimpleDateFormat
中使用过各种模式,因此我对其用法相当熟悉。也许我因为盯着它太久而错过了一些明显的东西。
另一种可能性是时髦(技术术语)空白。上下文是一个屏幕抓取应用程序,我在其中使用 HtmlCleaner 来整理凌乱的 html。虽然我发现 HtmlCleaner 总体上相当不错,但我注意到一些奇怪的问题,例如,看起来像空格但无法被 StringTokenizer 识别的字符。我主要解决了这个问题,没有深入研究字符编码或类似的东西,但我开始怀疑。
最佳答案
要测试它是否是日期格式,请编写一个测试类来证明它。对于这些类型的事情,我喜欢使用 bsh (beanshell)。这是我的测试:
sdf = new java.text.SimpleDateFormat("EEE MM/dd hh:mma");
System.out.println(sdf.format(sdf.parse("Thu 10/9 08:15PM")));
输出:Fri 10/09 08:15PM
所以,至少对于我的 jdk/jre 版本(1.6),格式字符串似乎工作得很好。我认为下一步是确保您正在处理的字符串正是您所认为的。您可以在代码中添加日志记录,并将输入字符串转储到日志文件中吗?然后,您可以在一个不错的文本编辑器中查看它,在您的测试类中运行它,或者在十六进制编辑器中查看它以确保它只是普通文本。
祝你好运!
关于java - 为什么解析此日期字符串会引发无法解析的日期异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/184678/