2014-02-28 135 views
1

我正面臨着SimpleDateFormat的問題。當我試圖執行程序即時獲取輸出01-01-2014 20:18:18 insted 10-01-2014 20:18:18。 我發佈我的代碼打擊。請幫我在代碼中找出錯誤。SimpleDateFormat不按預期解析月份

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 


public class ValidDate { 

    public static void main(String[] args) { 
     ValidDate vd = new ValidDate(); 
     vd.processDate();  

} 


private void processDate() { 
     SimpleDateFormat sdf = new SimpleDateFormat("MM-DD-yyyy HH:mm:ss"); 
     try { 

      Date dt = sdf.parse("10-01-2014 20:18:18"); 


      System.out.println(sdf.format(dt)); 

     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 
} 

謝謝。

+1

你得到正確的輸出,你在做什麼。您的假設獲得_unexpected_輸出。 –

+0

我應該得到10-01-2014 20:18:18作爲O/P但得到01-01-2014 20:18:18爲什麼? – Itachiuchiha

回答

8

每月使用ddDD是一年中的一年。同一天顯然優先於一個月,所以一天中的值爲01將在覆蓋分析的月份時覆蓋10

+0

感謝您的建議,但問題是與我認爲即時通訊給10,但getiing輸出爲01 – Itachiuchiha

+1

@ user1832985閱讀第三句。使用'DD'進行解析的事實使得'01'的年中日期值(即'01月份,因爲它是一年中的第一天)的值會覆蓋月份的值'10'。 –

+0

感謝問題解決 – Itachiuchiha

2

變化DD - > DD

SimpleDateFormat sdf = new SimpleDateFormat("MM-DD-yyyy HH:mm:ss"); 

SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");