Android 上的 SimpleDateFormat 解析异常 7+
SimpleDateFormat parse exception on Android 7+
我正在尝试解析日期并将其转换为 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)"
输入有星期几和月份的英文名称,所以你需要指定一个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);
实际上,如果您确定输入始终是英文,请使用相应的语言环境,而不是依赖默认设置。
我正在尝试解析日期并将其转换为 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)"
输入有星期几和月份的英文名称,所以你需要指定一个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);
实际上,如果您确定输入始终是英文,请使用相应的语言环境,而不是依赖默认设置。