這是我的問題 - 我需要解析一個字符串並查找它是否包含日期。字符串的例子:將人類可讀的日期轉換爲java日期對象
「明天上午02」 「2010年2月16日16:00」 「今日16:00」
你知道有哪些解決人類可讀的日期轉換任何Java庫?
這是我的問題 - 我需要解析一個字符串並查找它是否包含日期。字符串的例子:將人類可讀的日期轉換爲java日期對象
「明天上午02」 「2010年2月16日16:00」 「今日16:00」
你知道有哪些解決人類可讀的日期轉換任何Java庫?
這是一個實現是兩個問題,一個關於鑑定,其他的轉換。
識別可能的日期範圍內的(相對)容易,轉換然而,對於許多原因,尤其是純粹的多種方式可以表達語義的日期,以及隨之而來的歧義和誤導性陳述,可以出現很成問題。讓我們看看這裏的一些明顯的陷阱:
「後天下午2點。」如果我們簡單評估「明天下午2點」,我們將成爲一個漂泊的日子。
「2010年10月16日的兩天後」。它變得更糟......
「沒有太大的晚上9點前週五2013年3月13日」我們可以得到追溯到但背景使得它很曖昧。
假設你只是想在一個字符串,你可以做這樣的事情,以確定潛在的日期匹配...
private final String[] datePatterns = {"Yesterday","Today","Tomorrow", //etc
"Sunday","Monday","Tuesday","Thursday","Friday", // etc
"Lundi","Mardi","Mercredi", //etc in French
"2001","2002", // all the years
"AM","PM",
"January","February","March","August"};
private List lx = new ArrayList();
public boolean mayContainDates(String toCheck)
{
toCheck = toCheck.toUpperCase();
// irl we'd build this list 1 time in the constructor
for(int i = 0; i < datePatterns.length; i++)
{
lx.add(datePatterns[i].toUpperCase());
}
Iterator lit = lx.iterator();
while(lit.hasNext())
{
if (toCheck.contains((String) lit.next())
{
return true;
}
}
return false;
}
它真的是你如何設置你的datePattern String數組問題比較。或者,你可以以相似的方式迭代一個正則表達式數組,但是它會很慢。你可能會得到很多誤報,但你可以明顯改進這個簡單的模型。
檢查這裏的解決方案PHP's strtotime() in Java
它基本上是PHP的strtotime的在Java中
謝謝,這或多或少是我試圖找到的東西! – airlocker 2010-02-12 11:14:32
非常感謝您的回答。你是對的,日期的確定更難以解決,而且在我看來,一個簡單的基於知識的決策數據庫應該有所幫助 – airlocker 2010-02-12 11:21:51