【问题标题】:ParseExcepion when trying to parse a string to a date in android尝试将字符串解析为android中的日期时出现ParseExcepion
【发布时间】:2014-07-14 15:01:11
【问题描述】:

我不知道我做错了什么。 这是抛出的异常: java.text.ParseException: Unparseable date: "Fri Jun 14 13:25:40 ART 2013" (at offset 20)

这是我将上述字符串日期解析为对象日期的代码:

    public static Date getDateParseFromString(String sDate){


        DateFormat dateFormat = new SimpleDateFormat(PARSE_DATE_PATTERN, Locale.getDefault());
        dateFormat.setTimeZone(TimeZone.getDefault());
        Date d = null;
        try {
            d = dateFormat.parse(sDate);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return d;
    }

模式是:

private static final String PARSE_DATE_PATTERN = "EEE MMM d HH:mm:ss z yyyy";

我看到很多与此相关的问题,但我找不到与此相关的问题,可以帮助我吗?

提前致谢。

问候!

【问题讨论】:

  • @ZouZou 因为偏移量是 20,所以在我看来 ART 不是一个已知的语言环境。
  • 哦,是的,有默认语言环境吗?还是这种变化取决于设备配置?
  • SimpleDateFormat 方法将使用您的默认Locale 来解析日期字符串。这样做,它知道Fri 指的是FridayFeb 指的是February。在这种情况下,它似乎不知道如何处理ART。您使用的 Java 版本可能没有阿根廷 (?) 时区。
  • @user1977204 默认区域设置是用户的首选区域设置。不是每个人都有的默认值(如果我理解您的评论)。启动应用程序时,您会在设备上选择区域设置。所以是的,这取决于设备配置。

标签: java android date parse-error


【解决方案1】:

感谢您的回答,问题是语言环境。 我更详细地解释了我为这个错误做了什么。这是我从 parse.com 存储库应用程序下载的日期,然后将数据放在 SQLLite DB 中,以便导出带有存储库中基本数据的 .apk。 然后,当用户运行应用程序时,我有一个从该存储库执行更新的进程,问题是我拥有的初始数据位于阿根廷时区,因此如果世界其他地方的用户没有安装此区域设置他们的设备应用程序将崩溃。 因此,为了修复这个错误,我的团队决定使用 Date 类中的 the getTime() 方法将从存储库获得的日期传递到毫秒。

然后与导出 .apk 时保存的毫秒日期进行比较,如果有来自存储库的任何更新。

再次感谢!

问候!

【讨论】:

  • 你可以删除你的问题,我不确定它是否真的向这个网站添加了有价值的信息(无意冒犯):-)
  • 或花时间做出实际答案
  • @ZouZou,我认为其他人可能会遇到同样的问题并在这里寻求帮助是合理的。但是,答案可以改进。
  • @PaulDraper 好吧,我看到很多类似的问题都有同样的问题,因为他们使用(隐含或不隐含)默认语言环境。无论如何,如果这个答案保持这样,没有必要保留这个问题。是的,如果 OP 很好地解释了问题所在以及他是如何纠正的,我同意应该保留它。
  • @ZouZou,如果您确实看到重复,请相应地标记。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-07
相关资源
最近更新 更多