这些代码在一些设备中崩溃。
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)
答案 0 :(得分:2)
您可以针对您的问题使用此解决方法。
但实际上Shlublu是正确的。
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;
}
答案 1 :(得分:1)
问题来自模式的a
部分。
它应该是“PM”,而不是“p.m.”,according to the SimpleDateFormat
documentation:
a am/pm marker (Text) PM
这与您收到的错误消息一致:
java.text.ParseException:Unparseable date:“15-02-2016 08:56 p.m.” (在偏移17处)
偏移17(从零开始)对应于“p.m。”的“p”。
答案 2 :(得分:0)
日期“p.m.”的部分内容在英语区域设置的SimpleDateFormat中不被识别为AM / PM说明符。它应该是AM或PM。