Android 7+上的SimpleDateFormat解析异常

时间:2018-02-15 12:09:07

标签: java android date simpledateformat datetime-parsing

我正在尝试解析日期并转换为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:Unparseable date:“Thu Feb 15 2018 10:55:55   GMT + 0000(UTC)“

1 个答案:

答案 0 :(得分: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);

实际上,如果您确定输入始终是英文,请使用相应的区域设置,而不是依赖默认值。