次の形式の文字列があります。
8月28日午後3時
有効な時刻と有効な日付がこの文字列に含まれていることを確認するための最良の方法は何でしょうか。私の最初の考えは、文字列を分割し、2つの正規表現を使用して時刻を一致させ、もう1つをその特定の日付形式(月の日を省略)と一致させることでした。ただし、2番目の正規表現(特定の日付形式の正規表現)で少し問題が発生しています。文字列が正しい形式であることを確認するには、他にどのような方法がありますか?
あなたはこれを試すことができます:
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をご覧ください。
を使用しjava.text.SimpleDateFormat
ます。のようなフォーマット文字列を使用しますHH:mm aa 'on' MMM dd
。
yyyy
フォーマット文字列と入力に追加する必要がある場合があり2012
ます。
使用し、寛大な構文解析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
}