2013-06-19 50 views
5

示例代碼不言自明:SimpleDateFormat的不一致解析錯誤

private void parse() throws ParseException{ 
     SimpleDateFormat sdf = new SimpleDateFormat("MMM/dd/yyyy"); 

     Date started = sdf.parse("Sep/22/2004"); 
     // this triggers: java.text.ParseException: Unparseable date: "May/23/2010" 
     Date ended = sdf.parse("May/23/2010"); 
} 

不知道還有什麼我可以添加到這一點。我試圖解析「MMM/dd/yyyy」日期,並且我得到不一致的異常行爲。這感覺就像我失去了一些明顯的東西。

+4

什麼是語言環境? – Guillaume

+0

哦,天哪,當然。 – habitats

+1

@habitats或簡單地說:'DateFormat sdf = new SimpleDateFormat(「MMM/dd/yyyy」,Locale.english);'如果你不想改變一般設置。 – assylias

回答

4

這當然與語言環境有關。添加以下內容:

sdf.setDateFormatSymbols(DateFormatSymbols.getInstance(Locale.ENGLISH)); 

或可替代簡單地用語言環境聲明它:

SimpleDateFormat sdf = new SimpleDateFormat("MMM/dd/yyyy", Locale.ENGLISH);