2012-08-28 39 views
1

我在的格式的字符串:08月28如何在java中驗證這個時間/日期字符串?

下午3:00什麼是驗證一個有效的時間和有效日期包含在此字符串中的最佳方式是什麼?我的第一個想法是分割字符串,並使用兩個正則表達式匹配一個時間,另一個匹配特定日期格式(縮寫月份日)。然而,我對第二個正則表達式(specfic日期格式的那個)有點麻煩。如何驗證字符串是否有正確的格式?

回答

3

你可以試試這個:

public boolean isValid(String dateStr) { 

    // K: hour of the day in am/pm 
    // m: minute of a hour 
    // 'on': static text 
    // MMM: name of the month with tree letters 
    // dd: day of the month (you can use just d too) 
    DateFormat df = new SimpleDateFormat("K:m a 'on' MMM dd", Locale.US); 

    try { 
     df.parse(dateStr); 
     return true; 
    } catch (ParseException exc) { 
    } 

    return false; 

} 

更多格式字符串在這裏:http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

2

使用java.text.SimpleDateFormat。使用格式字符串,如HH:mm aa 'on' MMM dd

您可能必須將yyyy添加到格式字符串中,並將2012添加到輸入中。

+0

我認爲他是試圖檢查預先存在的字符串是否有效,而不是創建新的日期字符串。如我錯了請糾正我。 – arshajii

+0

只需要用你的字符串調用'parse()',如果它不符合格式,就會拋出'ParseException'。您可以免費獲得返回的「日期」!你可能想把'isLenient'設置爲'false'。如果要確保使用了整個輸入字符串,請使用「parse」的雙參數形式。 –

1

使用SimpleDateFormat並確保它不使用lenient解析:

try { 
    DateFormat df = new SimpleDateFormat("h:mm a 'on' MMM dd", Locale.US); 
    df.setLenient(false); 
    Date dt = df.parse(s); 
} catch (ParseException pe) { 
    // Wrong format 
} 
+0

對不起João,我沒有看到你的答案。 – davidbuzatto