2016-08-25 18 views
2

私はこのような日付の文字列を持っています1 May 2010 To 15 Aug 2016。私は関数の日付文字列としてこれをチェックしたいと思います。この文字列をnew Date(value)でチェックしています。どのように日付としてこれをチェックすることができますか?isDateが返ってきていることを確認してください。無効な日付

+2

2つの日付がありますか? 2010年5月1日と2016年8月15日です。それらを分割して両方をチェックする必要があります。 – Evus

+0

inspiration http://stackoverflow.com/questions/492994/compare-two-dates-with-javascript – daremachine

+0

2つの日付があり、これらの日付はあなたまたは(静的な)またはいくつかの場所から与えられ、動的のように –

答えて

0
var checkDate = function (str){ 
    var dates = str.split("To"); 
    for(var i = 0; i < dates.length; i++) { 
     if (moment(dates[i]).isValid()) { 
      return true; 
     } else { 
      return false; 
     } 
    } 
} 

のためのフィドルを作成しました。

+0

私はあなたの必要に応じて私の機能を変更しました。あなたはそのようにする必要があります。チェックしてください。ここであなたのコードは、配列のseccond部分をチェックする機会を持っていません。例:「2001年5月1日から2015年8月15日まで」と考えてください。それは真実を返すでしょう。 2番目の部分は有効ではありません。私の機能をチェックし、それが他の人に役立つようにそれがOKであれば受け入れたものとしてマークしてください。 –

+0

関数全体を 'str.split( 'To').every(s => return moment(s)> isValid());'に置き換えることはできますが、文字列形式をパーサに渡す必要があります。 – RobG

1
var str = "1 May 2010 To 15 Aug 2016"; 
//First split string 
var array = str.split("To"); 
//then check if both are dates 
for(var i = 0; i < array.length; i++) { 
if(isNaN(new Date(array[i]))) { //Checking date 
    alert(array[i]+ ' is not valid date'); 
} 
} 
3

私はこのためにjs date library moment jsを使用します。

var checkDate = function (str){ 
    var dates = str.split("To"); 
    var flag = true; 
    for(var i = 0; i < dates.length; i++) { 
     if (moment(dates[i]).isValid()) { 
     flag = false; 
    } 
    } 

    return flag; 
} 

私はどこでも私のコードでは、この機能を使用することができる

https://jsfiddle.net/Refatrafi/wj5zc75e/

+0

私は変更があったあなたの関数と私は私のコードでそれを使用することを好む。おかげで、私の答えを参照してください。 –

+0

おかげで、その時間が節約できます! –

+0

しないでください。 [*ドキュメント*](http://momentjs.com/docs/#/parsing/string/)を読んで従ってください。**常に**解析する文字列の形式を指定してください。さもなければ、あなたはそれをパーサに任せて推測します。これは、必ずしも「正しい」日付ではなく、有効な日付を返す最初の試みを返します。 – RobG

1

文字列を解析するときは、解析する文字列の形式を指定する必要があります。矢印の機能は、その後、OKであれば

var isValid = '1 May 2010 To 15 Aug 2016'.split(' To ').every(function(s) { 
 
    return moment(s,'D MMM YYYY').isValid(); 
 
}); 
 

 
console.log(isValid);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.js"></script>

var isValid = '1 May 2010 To 15 Aug 2016'.split(' To ').every(s=>moment(s,'D MMM YYYY').isValid()); 

は仕事をしていませんこれは、ES5 ごと方法を使用して非常に簡単に行うことができます。

関連する問題