Java Android 7+;
我试图解析一个日期并将其转换为时间戳 在安卓6上它可以工作,但在安卓7上它抛出了一个异常。 有人能告诉我怎么修吗Java Android 7+;,java,android,date,simpledateformat,datetime-parsing,Java,Android,Date,Simpledateformat,Datetime Parsing,我试图解析一个日期并将其转换为时间戳 在安卓6上它可以工作,但在安卓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(
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:不可解析日期:“Thu Feb 15 2018 10:55:55
格林尼治标准时间+0000(UTC)”
输入有星期和月份的英文名称,因此需要指定
java.util.Locale
如果创建不带区域设置的SimpleDataFormat
,它将使用设备的默认设置。您的代码仅在默认值为英语时有效,否则需要指定:
// 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);
实际上,如果您确定输入始终是英文的,请使用相应的区域设置,而不是依赖默认设置。我不认为您搜索任何东西?您的SimpleDataFormat没有指定
区域设置,因此它使用系统默认设置,而不是<代码> LoaLe.Eng/<代码>显示已解析日期的日志,顺便考虑一下,把长期过时的、臭名昭著的麻烦代码< SimpleDateFormat >代码>和朋友添加到Android项目中,以便使用< java > java >时间>代码>,即现代Java日期和时间API。和他一起工作真是太好了。谢天谢地,我不知道这件事可能是重复的