「30/09/1992」のような入力日付文字列があり、私の必要性に合わせてこのコードが見つかりました。 PFBコード。JavaScriptの日付変換が失敗しない
var input1 = "30/09/1992";
var isVaidDate = false;
var actualDate = "";
try{
var pattern = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/;
var arrayDate = input1.match(pattern);
var actualDate = new Date(arrayDate[3], arrayDate[2] - 1, arrayDate[1]);
var isVaidDate = typeof dt.getMonth === 'function';
}catch(e){var output1 = false;}
print(isVaidDate);
print(actualDate);
上記のコードは正常に動作しますが、私は「31/09/1992」または「40/09/1992」と入力を設定したときに、私が来て、無効な日付を期待していますが、私は以下の出力を得ます。 "31/09/1992" の
: "40/09/1992" の
true
Thu Oct 01 1992 00:00:00 GMT+0530 (India Standard Time)
:
true
Thu Oct 10 1992 00:00:00 GMT+0530 (India Standard Time)
は、どのように私は私がこれらの2つの文字列を渡すとき、これは失敗してもらう必要があります。ありがとう。また、何が起こっていると、それが失敗didntの理由、また有用であろう:)
あなたが手動で '+ arrayDate [3]!== date.getFullYear()||をチェックする必要があります。 + arrayDate [2]!== date.getMonth()|| <同じ日付> ' – Rajesh
私はこの問題を抱えていました。この記事の助けを借りてくるわけではありません:https://codereview.stackexchange.com/questions/109765/javascript-date-validation – Rajesh
@Rajeshありがとう、私はあなたが与えたコードにいくつかの変更を加えました。既存のコードに改行すると、期待通りに機能します。その関数のためだけに0から始まるため、getMonth()+ 1を追加しました 'var valid = + arrayDate [3] === actualDate.getFullYear()&& + arrayDate [2] === actualDate.getMonth ()+ 1 && + arrayDate [1] === actualDate.getDate(); print(有効); ' –