2013-10-29 48 views
2

我想將日期從2009年5月15日19:24:11 MDT到20090515192411. 但是當我嘗試下面的代碼時,readformat本身將輸入爲5月16日,而不是5月15日SimpleDateFormat返回錯誤的日子

這是我的代碼。

String dateInString = "May 15, 2009 19:24:11 PM MDT"; 

    DateFormat readFormat = new SimpleDateFormat("MMM dd, yyyy hh:mm:ss a z"); 
    DateFormat writeFormat = new SimpleDateFormat("yyyyMMddHHmmss"); 

    Date date = null; 
    try { 
     date = readFormat.parse(dateInString); 
    } 
    catch(ParseException e) { 
     e.printStackTrace(); 
    } 

    System.out.println(date); // Prints May 16, 2009 07:24:11 AM MDT 

    String formattedDate = ""; 
    if(date != null) { 
     formattedDate = writeFormat.format(date); 
    } 

    System.out.println(formattedDate); // Prints 20090516072411 

感謝您的幫助提前。

+4

19和PM對我無效 –

+1

解決了這個問題自己修改了readFormat從「MMM dd,yyyy hh:mm:ss az」到「MMM dd,yyyy HH:mm:ss az」(hh到HH) – Satya

回答

3

你需要HH而不是hh閱讀24小時格式的時間。 Java的「寬鬆日期」正在讓你在這裏 - 19:24 pm正在被解析爲晚上11:24之後的8個小時。

4
String dateInString = "May 15, 2009 19:24:11 PM MDT"; 

無效,時間可能是要麼24小時格式或它可能有AM/PM

+0

+1 PM增加12小時,因此19 + 12小時=> 1天和7小時。 –