2013-12-18 190 views
0

我寫了下面的代碼來解析一個簡單的日期,如 「09-MAR-17」:java的不正確的日期格式

DateFormat df = new SimpleDateFormat("dd-MMM-yy"); 
    Date start = null; 
    Date end = null; 
    try { 
     start = df.parse(data.get(i)[Columns.PACKAGESTART.ordinal()]); 
     end = df.parse(data.get(i)[Columns.PACKAGEEND.ordinal()]); 
    } catch (ParseException ex) { 
     ex.printStackTrace(); 
    } 

然而,這將引發以下異常:

java.text.ParseException: Unparseable date: "07-MAR-17" 
    at java.text.DateFormat.parse(DateFormat.java:357) 

但是我不知道爲什麼。是「dd-MMM-yy」格式不正確嗎?

編輯︰在netbeans中運行這個給我一個異常,在eclipse中運行完全相同的代碼似乎工作。

+1

IIRC'MMM'預計'Mar'不會'MAR'。 – Crozin

+0

似乎對我工作正常 – SudoRahul

+0

我剛剛測試過你的代碼,它工作正常:http://ideone.com/nA1x7z所以'SimpleDateFormat'是不區分大小寫的。 – Crozin

回答

2

我嘗試了一下,發現解析是依賴於語言環境的。例如,「07-MAY-17」將使用英語語言環境,但不是瑞典語語言環境(5月份稱爲「maj」)。我懷疑你正在發生類似的事情。

1

你需要以下擴展到您的代碼,以解析字符串「MAR」(英語!):

DateFormat df = new SimpleDateFormat("dd-MMM-yy", Locale.US); 

由於@SmallHacker一直認爲它是在分析一個定位問題。