2017-04-05 17 views
-5

こんにちは私は日付と比較する単純なif文を持っていますが、実行されていませんが、デバッグしようとしましたが動作しません。時間if文が動作しない

dateFormat = "01/05/2099" 
dateMissing = "25/11/2016" 

if(dateFormat > dateMissing){ 
    dateFormat = dateMissing; 
} 
+0

日付または文字列? –

+0

'DateFormat = new Date(" 01/05/2099 ")' –

+0

@AlexMcMillan:いいえ、 'Date'はそのフォーマットを理解するために定義されていません。 –

答えて

1

あなたは文字列を比較しています。差異が見つかるまで左から右へ順番に文字を比較し、その差を結果として使用します。 "2">"0"であるため、その文字列は他の文字列よりも大きくなります。

日付を解析して結果を比較する必要があります。 new Date(dateFormat)などを使用しないでください。これらの文字列は、JavaScriptのDateオブジェクトで処理される形式ではありません。あなた自身を解析する(直接、または図書館を介して)。例えば。

var dateFormat = "01/05/2099"; 
 
var dateMissing = "25/11/2016"; 
 
var parts, dt1, dt2; 
 
var parts = dateFormat.split("/"); 
 
var dt1 = new Date(+parts[2], +parts[1] - 1, +parts[0]); 
 
parts = dateMissing.split("/"); 
 
var dt2 = new Date(+parts[2], +parts[1] - 1, +parts[0]); 
 
if (dt1 > dt2) { 
 
    dateFormat = dateMissing; 
 
} 
 
console.log("dateFormat:", dateFormat); 
 
console.log("dt1", dt1.toString()); 
 
console.log("dt2", dt2.toString());

0

あなたは、単に日付を含む文字列を比較することはできません。まず、許容される形式(ミリ秒)に変換します。

var dateFormat = new Date("05/01/2099").getTime(); 
var dateMissing = new Date("11/25/2016").getTime(); 

次に、日付の比較を行うことができます。

+1

"*あなたは*の文字列を単純に比較することはできません。* localeCompare *、例えば' '2099 -01-05'.localeCompare( '2016-11-25') '。;-) – RobG