Android java.text.ParseException:不可解析日期:
此代码在一些设备中崩溃Android java.text.ParseException:不可解析日期:,android,Android,此代码在一些设备中崩溃 SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy hh:mm a", Locale.ENGLISH); format.setTimeZone(TimeZone.getTimeZone("GMT")); Date date = null; try { date = format.parse(dtStart);
SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy hh:mm a", Locale.ENGLISH);
format.setTimeZone(TimeZone.getTimeZone("GMT"));
Date date = null;
try {
date = format.parse(dtStart);
System.out.println("Date ->" + date);
} catch (Exception e) {
e.printStackTrace();
}
long ere = date.getTime() / 1000;
错误:
System.err: java.text.ParseException: Unparseable date: "15-02-2016 08:56 p.m." (at offset 17)
System.err: at java.text.DateFormat.parse(DateFormat.java:579)
在英语区域设置的SimpleDateFormat中,日期“p.m.”部分不被识别为AM/PM说明符。它应该是AM或PM。在英语区域设置的SimpleDateFormat中,日期“p.m.”部分不被识别为AM/PM说明符。应该是上午或下午。问题来自模式的
a
部分。
应该是“下午”,而不是“下午”
这与您收到的错误消息一致:
java.text.ParseException:不可解析日期:“2016年2月15日08:56下午”(偏移量17)
偏移量17(从零开始)对应于“p.m.”的“p”。问题来自模式的
a
部分。
应该是“下午”,而不是“下午”
这与您收到的错误消息一致:
java.text.ParseException:不可解析日期:“2016年2月15日08:56下午”(偏移量17)
偏移量17(从零开始)对应于“p.m.”的“p”。您可以使用此解决方案解决您的问题 但实际上这是正确的
private static void parseTime(String dtStart) {
String time = dtStart.substring(0, dtStart.length() - 4);
System.out.println(time);
String timePick = dtStart.substring(dtStart.length() - 4, dtStart.length());
System.out.println(timePick);
if (timePick.equals("p.m.")) {
time += "PM";
} else if (timePick.equals("a.m.")) {
time += "AM";
}
SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy hh:mm a", Locale.ENGLISH);
format.setTimeZone(TimeZone.getTimeZone("GMT"));
Date date = null;
try {
date = format.parse(time);
System.out.println("Date ->" + date);
} catch (Exception e) {
e.printStackTrace();
}
long ere = date.getTime() / 1000;
}
您可以使用此解决方法解决您的问题 但实际上这是正确的
private static void parseTime(String dtStart) {
String time = dtStart.substring(0, dtStart.length() - 4);
System.out.println(time);
String timePick = dtStart.substring(dtStart.length() - 4, dtStart.length());
System.out.println(timePick);
if (timePick.equals("p.m.")) {
time += "PM";
} else if (timePick.equals("a.m.")) {
time += "AM";
}
SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy hh:mm a", Locale.ENGLISH);
format.setTimeZone(TimeZone.getTimeZone("GMT"));
Date date = null;
try {
date = format.parse(time);
System.out.println("Date ->" + date);
} catch (Exception e) {
e.printStackTrace();
}
long ere = date.getTime() / 1000;
}