我正在尝试解析日期并转换为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)“
答案 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);
实际上,如果您确定输入始终是英文,请使用相应的区域设置,而不是依赖默认值。