【问题标题】:java.text.ParseException: unparsable date: "Mon, 22 Aug 2005 20:21:52 +0200"java.text.ParseException:无法解析的日期:“星期一,2005 年 8 月 22 日 20:21:52 +0200”
【发布时间】:2015-02-16 02:54:35
【问题描述】:

我收到了这个错误。

我的代码有什么问题?

String line = "Date: Mon, 22 Aug 2005 20:21:52 +0200";
String datestring = line.substring(6);
DateFormat dateFormat = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss ZZZZZ");
Date inputDate = null;

try {
    inputDate = dateFormat.parse(datestring);
} catch (ParseException e) {
    e.printStackTrace();
}

我的错误日志:

java.text.ParseException:无法解析的日期:“星期一,2005 年 8 月 22 日 20:21:52 +0200" at java.text.DateFormat.parse(Unknown Source) at netspy.EMail.parseLine(EMail.java:133) at netspy.EMail.parseMail(EMail.java:91) 在 netspy.FileManager.findMails(FileManager.java:66) 在 netspy.BaseFrame.switchContent(BaseFrame.java:218) 在 netspy.BaseListener.actionPerformed(BaseListener.java:79) 在 javax.swing.AbstractButton.fireActionPerformed(未知来源)在 javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(未知来源)在 javax.swing.DefaultButtonModel.setPressed(未知来源)在 javax.swing.plaf.basic.BasicButtonListener.mouseReleased(未知 源)在 java.awt.Component.processMouseEvent(未知源)在 javax.swing.JComponent.processMouseEvent(未知来源)在 java.awt.Component.processEvent(未知来源)在 java.awt.Container.processEvent(未知来源)在 java.awt.Component.dispatchEventImpl(未知来源)在 java.awt.Container.dispatchEventImpl(未知来源)在 java.awt.Component.dispatchEvent(未知来源)在 java.awt.LightweightDispatcher.retargetMouseEvent(未知来源)在 java.awt.LightweightDispatcher.processMouseEvent(未知来源)在 java.awt.LightweightDispatcher.dispatchEvent(未知来源)在 java.awt.Container.dispatchEventImpl(未知来源)在 java.awt.Window.dispatchEventImpl(未知来源)在 java.awt.Component.dispatchEvent(未知来源)在 java.awt.EventQueue.dispatchEventImpl(未知来源)在 java.awt.EventQueue.access$400(未知来源)在 java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知 来源)在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知 源)在 java.awt.EventQueue$4.run(未知源)在 java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知 源)在 java.awt.EventQueue.dispatchEvent(未知源)在 java.awt.EventDispatchThread.pumpOneEventForFilters(未知来源) 在 java.awt.EventDispatchThread.pumpEventsForFilter(未知来源) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(未知 来源)在 java.awt.EventDispatchThread.pumpEvents(未知来源) 在 java.awt.EventDispatchThread.pumpEvents(Unknown Source) 在 java.awt.EventDispatchThread.run(未知来源)

【问题讨论】:

  • 此代码有效,您确定您发布的是正确的吗?
  • 您可以尝试添加使用模式“EEE, dd MMM yyyy HH:mm:ss ZZZZZ”
  • 是的。我添加了错误日志。另外添加其他模式也没有修复异常。

标签: java simpledateformat


【解决方案1】:

您的系统区域设置不是英语吗?尝试明确指定语言环境:

DateFormat dateFormat = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss ZZZZZ",
        Locale.US);

【讨论】:

  • 不错,没想到这个。 Op 的代码对我有用
  • 本地设置应该是可变的,日期可以来自不同的时区。我实际上来自德国,所以我尝试了:DateFormat dateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss ZZZZZ", Locale.GERMANY); 可能仍然抛出异常。
  • Mon, 22 Aug 2005 20:21:52 +0200 是德国的有效字符串吗?对我来说看起来像一个英文字符串。如果是德语,字符串应该是Mo, 22 Aug 2005 20:21:52 +0200
  • 这就是你的意思。我得到了你,这就是原因。小事,但花了我 1 多小时 :-) 谢谢
猜你喜欢
  • 2020-04-19
  • 2012-02-13
  • 2022-10-14
  • 1970-01-01
  • 1970-01-01
  • 2015-07-01
  • 1970-01-01
  • 2015-06-04
  • 1970-01-01
相关资源
最近更新 更多