2011-05-24 34 views
1

是否有智能日期分析器在Java中可以解析各種日期格式,而無需預先知道格式是什麼? 比如我可以有以下格式:java智能日期分析器

21-3-1998, 
March 2004, 2001, 
3/4/97 
12-Dec-1998 

有一個簡單的解析調用(第三方LIB是確定)我可以用它來處理他們打電話?

+0

根據我的經驗,無論何時我們試圖列舉所有合理的日期格式,我們很快就發現有人使用的另一種格式是我們沒有考慮過的。 – 2011-05-24 21:20:06

+3

當您看到2011年4月3日的日期時,您是否期望您的智能解析器將其解析爲2011年3月4日或2011年4月3日? – Olaf 2011-05-24 21:27:51

+0

這是不使用這種愚蠢的'xx/xx/yyyy'格式的原因。 ISO 8601格式是由於某種原因而發明的。 (但是,對於需要解析這個的人來說,這並沒有什麼幫助。) – 2011-05-24 21:46:06

回答

1

我不知道是否有一個很好的開箱即用的選擇,給定幾乎無限數量的排列組合;但是如果我必須這樣做,我會從事實上的Java日期包Joda開始,然後按照允許的數據格式順序進行線性查找,並接受第一個可以成功解析的第一個數據包。

-2

您是否嘗試過標準Java解決方案SimpleDateFormat.parse(String, ParsePosition)

the documentation

解析字符串文本,以生成一個 日期。該方法試圖從 pos開始的索引開始分析 文本。如果解析成功,則將pos的 指數使用的最後一個字符(解析 不一定使用所有 字符,直到達到 字符串的結尾)後更新到索引 ,並解析日期是 返回。可以使用更新的pos來指示 下一次調用此方法的起始點。如果發生錯誤 ,則pos的索引不是 已更改,pos的錯誤索引設置爲 至發生錯誤的 字符的索引,並且返回null爲 。