73

m / d/yyyyの形式の2つの文字列日付があります。たとえば、「11/1/2012」、「1/2/2013」などです。2つの文字列の日付を比較する関数をJavaScriptで記述しています。私の関数のシグネチャは、 bool isLater(string1, string2),string1によって渡された日付がstring2によって渡された日付よりも遅い場合、trueを返し、そうでない場合はfalseを返します。したがって、isLater(“ 1/2/2013”​​、“ 11/1/2012”)はtrueを返す必要があります。このためのJavaScript関数を作成するにはどうすればよいですか?

4

6 に答える 6

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

デモJsfiddle

最近コメントからわかったので、以下のような文字列を直接比較できます

if ("2012-11-01" < "2012-11-04") {
    alert ("Error!");
}
于 2013-02-08T20:57:33.857 に答える
17

2つの文字列を簡単に比較できます

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

それで

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

trueを返します

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

falseを返します

于 2017-03-13T10:03:38.533 に答える
13

日付を解析し、数値と同じように比較します。

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

他の日付形式をサポートする必要がある場合は、date.jsなどのライブラリを検討してください。

于 2013-02-08T20:54:42.223 に答える
2

受け入れられた回答のように、yyyy-mm-dd形式ではない日付文字列を直接解析することはできません。vitranによる回答は機能しますが、JQueryが混在しているため、少し作り直しました。

// Takes two strings as input, format is dd/mm/yyyy
// returns true if d1 is smaller than or equal to d2

function compareDates(d1, d2){
var parts =d1.split('/');
var d1 = Number(parts[2] + parts[1] + parts[0]);
parts = d2.split('/');
var d2 = Number(parts[2] + parts[1] + parts[0]);
return d1 <= d2;
}

PSはvitranの投稿に直接コメントしたはずですが、私にはそれを行う担当者がいません。

于 2018-08-22T12:57:31.343 に答える
-1

日付が標準形式yyyy-mm-dd(2017-02-06)でない場合、たとえば2016年6月20日。このコードを使用できます

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
于 2017-04-27T15:00:48.393 に答える
-1

「Date.parse()」を使用して日付を適切に比較できますが、ほとんどのコメントでは、文字列を分割してから数字を合計し、明らかに間違ったロジックと比較しようとしているため、完全ではありません。

これがトリックです。文字列を分割する場合は、ネストされた形式でパーツを比較します。

年と年、月と月、日と日を比較します。

<pre><code>

var parts1 = "26/07/2020".split('/');
var parts2 = "26/07/2020".split('/');

var latest = false;

if (parseInt(parts1[2]) > parseInt(parts2[2])) {
    latest = true;
} else if (parseInt(parts1[2]) == parseInt(parts2[2])) {
    if (parseInt(parts1[1]) > parseInt(parts2[1])) {
        latest = true;
    } else if (parseInt(parts1[1]) == parseInt(parts2[1])) {
        if (parseInt(parts1[0]) >= parseInt(parts2[0])) {
            latest = true;
        } 
    }
}

return latest;

</code></pre>
于 2020-07-23T18:38:09.673 に答える