【问题标题】:Android ParseDateException EDT TimeZone not recognisedAndroid ParseDateException EDT TimeZone 无法识别
【发布时间】:2015-05-17 19:08:26
【问题描述】:

下面的 SimpleDateFormat 解析了我尝试过但似乎无法识别 EDT 的所有其他 TimeZone?

private static final SimpleDateFormat currentDateFormat = 
    new SimpleDateFormat("EEE, d MMM yyy h:mm a z");

ParseException:无法解析的日期:“Sun, 15 Mar 2015 12:50 pm EDT”(偏移量 26)

我暂时从日期字符串中截断了时区,以便正确解析。

【问题讨论】:

  • TimeZone.getTimeZone("America/New_York").getDisplayName(true, TimeZone.SHORT) 产生了什么?是“EDT”还是别的什么?还要确保使用英语作为默认语言环境。如果测试结果不是“EDT”,那么问题的原因可能是您的 Android 版本管理了一组不同的时区名称和缩写。
  • @Ozzy 你解决了吗?
  • @JaredBurrows 是的,有解决方法。从格式中删除“z”并使用函数计算 3 个字母时区的时区差异。稍后我不太忙时会发布答案。

标签: java android parsing timezone simpledateformat


【解决方案1】:

基于此答案:https://stackoverflow.com/a/999191/950427 并在此处阅读 SimpleDateFormat 文档:http://developer.android.com/reference/java/text/SimpleDateFormat.html

时间格式似乎使用了 3 个“z”:

格式:

Thu Jun 18 20:56:02 EDT 2009"

他们的答案:

new SimpleDateFormat("EEE MMM d HH:mm:ss zzz yyyy");

你需要改变:

new SimpleDateFormat("EEE, d MMM yyy h:mm a z");

收件人:

new SimpleDateFormat("EEE, d MMM yyy h:mm a zzz");

【讨论】:

  • 不,一个z就够了。
  • @Apurva 看之前的答案。这已经被问过并以类似的方式修复。
猜你喜欢
  • 2013-04-27
  • 2017-07-13
  • 2021-07-24
  • 2015-09-02
  • 1970-01-01
  • 2023-03-09
  • 2020-09-28
  • 1970-01-01
  • 2014-04-07
相关资源
最近更新 更多