0

これは何度も聞かれる質問のように思えますが、どういうわけか、最も一般的な解決策がうまくいかないことに注意してください。ほとんどの回答は、次のようなソリューションを中心に展開しています。

function isValidDate(){
  var dateString = '2001/24/33';
  return !isNaN(Date.parse(dateString));
}

Firefox では、Date.parse が数値であるため、false が返されます。1041462000000。

どうすればこれを修正できますか..?

4

2 に答える 2

2

これを行う良い方法は、文字列に基づいて新しい日付オブジェクトを作成し、そのオブジェクトの結果を入力文字列と比較することです。同じでない場合、日付は無効であり、JS はより近い (有効な) 日付にフォールバックしました。このようなもの:

function isValidDate(str){
   var split = str.split('/');
   var date = new Date(split[0], split[1]-1, split[2]);

   return (date.getFullYear() == split[0] && date.getMonth()+1 == split[1] && date.getDate() == split[2]);
}

次のように呼び出します。

var isValid = isValidDate('2001/24/33');

注: この場合、入力文字列は特定の形式であると想定されます。常に同じ形式であることが確実であれば、問題はありません。そうでない場合は、このコードでもう少し作業する必要があります。

補足として:大規模な日付操作を行う必要がある場合は、 moment.jsを使用してください。

于 2013-06-06T11:18:22.470 に答える
0

http://www.datejs.com/を使用することをお勧めします。

とてもクールな図書館。

于 2013-06-06T11:28:00.260 に答える