2015-11-20 147 views
0

處理爲特定課程保存日期的應用程序,即創建每個課程的結束日期。解析日期錯誤

此服務以MM/dd/yyyy格式接受日期。

例如,

course = { 
    "courseName": "My Course", 
    "endDate": "01/10/2015" 
} 

應在服務得到解析爲 「2015年1月10日」,即 「2015年1月10日」。

但是,有其中的日期是錯誤的格式接收,實例即DD/MM/YYYY

course = { 
    "courseName": "My Course", 
    "endDate": "13/01/2015" 
} 

其中得到了解析爲「2016年1月1日」,即「2016年1月1日」。

以上分析是使用

String d = "13/01/2015"; 
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy"); 
Date date = format.parse(d); 

我的問題是完成的,是有辦法,我可以回去通過逆向解析錯誤的日期歸還日期?

我試圖解析它使用模式「dd/MM/yyyy」,但我得到了「01/01/2016」。

+2

通過顛倒什麼? DateFormat可以同時使用兩種方式,但如果您在1月1日之前錯誤地解析了日期,則無法將其轉換爲原本應該使用的日期,除非您仍然有原始字符串被錯誤地解析。 – khelwood

+1

_「01/10/2015」即「2015年1月1日」_你的意思是2015年1月10日或2015年10月1日? – naurel

+0

「01/10/2015」即「2015年1月10日」。我的錯。我編輯了這個問題。 – Aakash

回答

3

問題是,一旦你的解析值爲「01/01/2016」,你怎麼知道原始值是實際「01/01/2016」還是你錯誤的「13/01/2015」 。你沒有。

所有我可以建議是供將來參考的是,你setLenient(false)那麼SimpleDateFormat會在遇到這樣的事情拋出一個適當的ParseException

String d = "13/01/2015"; 
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy"); 
format.setLenient(false) 
Date date = format.parse(d); // throws ParseException 
+0

謝謝你會記住這一點。 – Aakash