2013-02-08 28 views
25

私は2つの文字列の日付をm/d/yyyyの形式で持っています。たとえば、「11/1/2012」、「1/2/2013」などです。 JavaScriptで2つの文字列の日付を比較する関数を記述しています。私の関数の署名は bool isLater(string1, string2),です。string1によって渡された日付がstring2によって渡された日付よりも遅い場合はtrueを返し、そうでない場合はfalseを返します。 したがって、isLater( "1/2/2013"、 "11/1/2012")はtrueを返す必要があります。このためにJavaScript関数を作成するにはどうすればよいですか?あなたが他の日付形式は、date.jsとしてライブラリを考慮するサポートする必要がある場合javascriptで2つの文字列の日付を比較するには?

function isLater(str1, str2) 
{ 
    return new Date(str1) > new Date(str2); 
} 

+0

文字列から2つのDateオブジェクトを作成し、数値として比較します。 – georg

+2

文字列をネイティブJS datetimeオブジェクトに変換します(http://stackoverflow.com/questions/5619202/converting-string-to-date-in-jsを参照)。そこから簡単に入手できます。 –

+1

文字列から2つの日付オブジェクトを作成するにはどうすればよいですか? – GLP

答えて

44
var d1 = Date.parse("2012-11-01"); 
var d2 = Date.parse("2012-11-04"); 
if (d1 < d2) { 
    alert ("Error!"); 
} 

Demo Jsfiddle

+1

日付の形式が12/31/1992の場合は動作しますか?どこMM/dd/YYYY? – KyelJmD

+1

MM/DD/YYYY形式でも動作します。 @AnttiHaapalaすべての演算子で動作するようです。 – Rajush

+2

私は私のコメントを撤回しました。これは、 '=='のためには動作しないと主張しました。なぜなら、私がコードを垣間見ると、Dateオブジェクトを比較していると思ったからです。しかし、 'Date.parse'は代わりに整数を返します(これはどれくらい便利なのでしょうか?)このコードは等価でも動作します。それでも 'new Date('2015-10-10 ')==新しいDate('2015-10-10')'が偽であることに注意してください! –

5

は、日付を解析し、あなたが数字を同じようにそれらを比較します。

+1

これは、比較演算子でのみ機能し、等号 '=='や '!='ではなく、動作することに注意してください。 –

+2

DD/MM/yyyy形式では機能しません。なぜ誰かが私に教えてくれますか? –

+0

フォーマットはdd-MM-yyyyyでは機能しません – meenu1meen

3

あなたは、単に2列

function isLater(dateString1, dateString2) { 
    return dateString1 > dateString2 
} 

を比較することができます次に

isLater("2012-12-01", "2012-11-01") 

trueを返し

isLater("2012-12-01", "2013-11-01") 
012しばらく

falseを返す

+1

'' 2017/10/26 ">" 2017/10/7 "' 'false':D – ahmadalibaloch

+0

ahmadalibalochここで間違えた'' 2017/10/26 ">" 2017/10/7 "'は 'false'を返しますが、それはあなたが'> 'を使っているからです。'isLater(" 2017/10/26 ">" 2017/10/07 ")'は 'false'を返しますが、 ' isLater( "2017/10/26"、 "2017/10/07 ")'あなたは '真' – CaseyC

1

日付がyyyy-mm-dd(2017-02-06)(例:20/06/2016)の形式でない場合。このコードを使用することができます

var parts ='01/07/2016'.val().split('/'); 
var d1 = Number(parts[2] + parts[1] + parts[0]); 
parts ='20/06/2016'.val().split('/'); 
var d2 = Number(parts[2] + parts[1] + parts[0]); 
return d1 > d2 
関連する問題