1

我有一个格式为:

8 月 28 日下午 3:00

验证此字符串中是否包含有效时间和有效日期的最佳方法是什么?我的第一个想法是拆分字符串并使用两个正则表达式来匹配时间,另一个来匹配特定的日期格式(缩写为月日)。但是,我在使用第二个正则表达式(用于特定日期格式的那个)时遇到了一些麻烦。还有什么办法可以验证字符串的格式是否正确?

4

3 回答 3

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

于 2012-08-28T23:03:53.380 回答
2

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

您可能必须添加yyyy到格式字符串和2012输入中。

于 2012-08-28T22:58:12.297 回答
1

使用SimpleDateFormat并确保它不使用宽松解析:

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
}
于 2012-08-28T23:01:51.310 回答