文字列がYYYYMMDD形式の日付文字列であるかどうかチェックするサンプルFunctionです。
サンプルソース
例)値が"YYYYMMDD"形式かつ、実在日付であることをチェックする
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
function isYYYYMMDD(str){ //null or 8文字でない or 数値でない場合はfalse if(str==null || str.length != 8 || isNaN(str)){ return false; } //年,月,日を取得する var y = parseInt(str.substr(0,4)); var m = parseInt(str.substr(4,2)) -1; //月は0~11で指定するため-1しています。 var d = parseInt(str.substr(6,2)); var dt = new Date(y, m, d); //判定する return (y == dt.getFullYear() && m == dt.getMonth() && d == dt.getDate()); } |
実行サンプル
ボタンを押すと、テキストボックスの値がYYYYMMDD形式の日付文字列かどうか判定します。
解説
- 受け取った文字列を最低限のチェックを行った後に正しくDate型に変換できることで日付チェックを実現しています。
- JavaScriptでは、2017年5月32日のような実在しない日付でも勝手に2017年6月1日と判定するので、実在日付を判定したい場合は当functionでチェックする必要があります。