Tips というより開発時に調べた Script 等を忘れないように書き留めた覚え書きです。
最近はここに書き留めておくことも忘れている始末で、我ながら情けなく思う今日この頃です。
ということで、不定期更新というか最近更新していませんが、JavaScript や VBScript などを紹介していきますのでご参考になれば幸いです。
日付が有効かチェックする
テキストフィールドに入力した値が日付として正しいかチェックします。
下記例では、正規表現を使って YYYY/MM/DD 形式になっているかも同時にチェックしています。
時間表示形式チェックの日付版です。
/**************************************************************** * 機 能: 入力された値が日付でYYYY/MM/DD形式になっているか調べる * 引 数: strDate = 入力された値 * 戻り値: 正 = true 不正 = false ****************************************************************/ function ckDate(strDate) { if(!strDate.match(/^\d{4}\/\d{2}\/\d{2}$/)){ return false; } var y = strDate.split("/")[0]; var m = strDate.split("/")[1] - 1; var d = strDate.split("/")[2]; var date = new Date(y,m,d); if(date.getFullYear() != y || date.getMonth() != m || date.getDate() != d){ return false; } return true; }
7~9行目:正規表現を使ってnnnn/nn/nn形式になっているかチェックしています。(n は 0~9 の数字)
月と日が1桁(YYYY/MM/DD or YYYY/M/D)でも許可する場合は
!strDate.match(/^\d{4}\/\d{1,2}\/\d{1,2}$/)
10~12行目:「/」で分解して年、月、日に分けて変数に格納しています。
Javascriptで月は 0 を起点とする為、0~11月になるので 1 を引いています。
13行目:Dateオブジェクトを使って日付を生成しています。
指定した引数が日付として無効な値の場合、エラーにならずに正しい日付に変換されます。
例えば11月31日を指定すると、11月は30日までしかないので12月1日が返ってきます。
14~16行目:日付として妥当かチェックしています。
13行目で生成した日付と比較して、年、月、日のいずれかが違っていると日付として妥当でなかったということになります。