最終更新: toriaezuikioi 2010年09月27日(月) 13:49:42履歴
注:日付文字列は「/」が取り外されていること
String date1 = "20100927"; // 2010年09月27日 実在する値 String date2 = "20100229"; // 2010年02月29日 実在しない値 // 日付チェックを行うパターン(閏年も対応) String pattern = "^(?!([02468][1235679]|[13579][01345789])000229)(([0-9]{4}(01|03|05|07|08|10|12)(0[1-9]|" + "[12][0-9]|3[01]))|([0-9]{4}(04|06|09|11)(0[1-9]|[12][0-9]|30))|" + "([0-9]{4}02(0[1-9]|1[0-9]|2[0-8]))|" + "([0-9]{2}([02468][048]|[13579][26])0229))$"; if(date1.matches(format)){ // 引数に正規表現のパターンを渡す System.out.println("20100927は実在します。"); } else { System.out.println("20100927は実在しません。"); } if(date2.matches(format)){ // 引数に正規表現のパターンを渡す System.out.println("20100229は実在します。"); } else { System.out.println("20100229は実在しません。"); }実行結果
20100927は実在します。 20100229は実在しません。
注:日付文字列は「YYYY/MM/DD」形式で渡されていること
String date = "2010/02/29"; // 実在しない日付 DateFormat df = DateFormat.getDateInstance(); // 日付フォーマッターを定義 df.setLenient(fasle); // 解析レベルを厳密にする try { df.parse(date); // 入力年月日を解析 System.out.println(date + ":true"); } catch (ParseException e) { // ありえない日付が渡されるとこっちに来る System.out.println(date + ":false"); }実行結果
2010/02/29:false
このページへのコメント
YgE7oK Major thanks for the article. Much obliged.
LqResr I think this is a real great blog post.Really looking forward to read more.
2F2NaF <a href="http://vrpqylbfmdha.com/">vrpqylbfmdha</a>, [url=http://otujfmwpfrns.com/]otujfmwpfrns[/url], [link=http://xpognmdmzjfs.com/]xpognmdmzjfs[/link], http://ymnyumykfrql.com/
ydjqVE <a href="http://prtdeleifpcs.com/">prtdeleifpcs</a>, [url=http://wmvlolfhrnyn.com/]wmvlolfhrnyn[/url], [link=http://taqqejrxhanv.com/]taqqejrxhanv[/link], http://nxrjrmhsanvu.com/