【问题标题】:SimpleDateFormat parse exception on Android 7+ [closed]Android 7+ 上的 SimpleDateFormat 解析异常 [关闭]
【发布时间】:2018-02-15 12:09:07
【问题描述】:

我正在尝试解析日期并转换为Timestamp。

在 Android 6 上它可以工作,但在 Android 7 上它会引发异常。 谁能告诉我如何解决它?

private long getCorrectDate(String date) {
    SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss 'GMT'Z (z)");
    Date parsedDate = null;
    try {
        Logger.e("PARSE DATE : "+date);
        parsedDate = dateFormat.parse(date);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    Timestamp timestamp = new java.sql.Timestamp(parsedDate.getTime());
    Logger.e("" + date + " TO " + timestamp.getTime());
    return timestamp.getTime();
}

java.text.ParseException:无法解析的日期:“2018 年 2 月 15 日星期四 10:55:55 GMT+0000 (UTC)"

【问题讨论】:

标签: java android date simpledateformat datetime-parsing


【解决方案1】:

输入中有星期几和月份的英文名称,因此您需要指定java.util.Locale。

如果您创建没有语言环境的SimpleDateFormat,它将使用设备的默认设置。你的代码只有在默认已经是英文的情况下才有效,否则你需要指定它:

// use Locale.US or Locale.ENGLISH, I think both will work
SimpleDateFormat dateFormat =
    new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss 'GMT'Z (z)", Locale.US);

实际上,如果您确定输入始终为英文,请使用相应的语言环境而不是依赖默认设置。

【讨论】:

  • 谢谢,我不知道这个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-12
  • 2019-12-04
  • 1970-01-01
相关资源
最近更新 更多