【问题标题】:Unparseable Date Exception SimpleDateFormat无法解析的日期异常 SimpleDateFormat
【发布时间】:2016-07-13 04:54:27
【问题描述】:

在使用 SimpleDateFormat 将字符串解析为日期对象时,我遇到了错误。

java.text.ParseException:无法解析的日期:“2016 年 3 月 29 日星期二 11:27:37 -0400”

我用来解析日期的代码是:

DateFormat df2 = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");

我可以解析像Mon, 13 Jun 2016 11:48:54 +0300这样的日期。

我注意到具有+ve timezone(+0300) 的日期被解析但-ve timezone(-0400) 没有被解析。

【问题讨论】:

标签: java parsing datetime simpledateformat timezone-offset


【解决方案1】:

我怀疑问题在于您的默认语言环境不是英语(也许是德语,这可以解释为什么 Mon 有效(Montag)而不是 Tue(Dienstag)?)。

只需指定 ENGLISH 作为语言环境:

DateFormat df2 = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.ENGLISH);
Date date = df2.parse("Tue, 29 Mar 2016 11:27:37 -0400");
System.out.println(date); //prints Tue Mar 29 15:27:37 GMT 2016

上面的代码在我的机器上运行良好on ideone。

【讨论】:

  • 而且它不像星期一或星期二,因为我在一周的所有日子里都遇到错误。我注意到的共同点是只有 -ve 时区。
  • @user2779095 我建议的解决方案适用于您问题中的输入:ideone.com/GbeP1F - 您可以显示minimal reproducible example 吗?你运行的是什么版本的 Java?
  • 我用的是jdk1.6.0_21版本。
  • 还有一件事。我正在使用 DateFormat df = new SimpleDateFormat("d MMM yyyy HH:mm:ss Z");它正在被解析,没有任何问题。
  • @user2779095 您仍然没有显示输入!您的问题可能是 msgs 不包含您认为的内容。除非你建立一个minimal reproducible example,否则很难帮助你!
猜你喜欢
  • 2011-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-04
  • 2013-05-23
  • 1970-01-01
  • 1970-01-01
  • 2017-02-28
相关资源
最近更新 更多