2016-02-15 51 views
0

該代碼在幾臺設備中崩潰。java.text.ParseException:無法解析的日期:

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) 

回答

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; 
} 
0

日 「下午」 的一部分在英文語言環境的SimpleDateFormat中不被識別爲AM/PM說明符。它應該是AM或PM。

1

問題來自於模式的a一部分。 它應該是 「PM」,而不是 「分」,according to the SimpleDateFormat documentation

a am/pm marker (Text) PM 

這是您收到的錯誤信息是一致的:

java.text.ParseException: Unparseable date: "15-02-2016 08:56 p.m." (at offset 17)

偏移17(從零開始)相當於「 「下午」的「p」。

相關問題