34

2 つの日付が同じ日でないかどうかを確認する方法。私はこの解決策を思いつきましたが、これを行うためのより良い方法があるかもしれません:

 var actualDate = new Date();
 var isNotToday = dateToCheck.getDay() !== actualDate.getDay() || dateToCheck < actualDate - 24 * 60 * 60 * 1000;
4

7 に答える 7

6

日、月、年を確認するのが最も安全です。

var isNotToday = dateToCheck.getDate() != actualDate.getDate()
      || dateToCheck.getMonth() != actualDate.getMonth()
      || dateToCheck.getFullYear() != actualDate.getFullYear();

これにより、DST と閏年に関して、そうでなければ干渉する可能性のある奇妙さを感じることはありません。

于 2012-10-09T14:52:33.320 に答える
0

両方とも午前 0 時に生成されるように、時刻を含む日付オブジェクトを作成しないでください。次に、エポック時間を確認します。

new Date('11/12/2012').getTime() === new Date('11/11/2012').getTime()
> false
new Date('11/12/2012').getTime() === new Date('11/12/2012').getTime()
> true
new Date('November 12, 2012').getTime() === new Date('11/12/2012').getTime()
> true
new Date('12 November, 2012').getTime() === new Date('11/12/2012').getTime()
> true

日付はオブジェクトによって解析可能である必要がありDate(私はクロム 23.0.1271.17 (公式ビルド 159779) ベータ版を使用しています)、時間を渡さない場合は真夜中に生成されます。

時間がある場合は、床に落として真夜中にテストしてください。

于 2012-10-09T14:54:28.603 に答える
0

function isEqual(startDate, endDate) {
    return endDate.valueOf() == startDate.valueOf();
}

var now =new Date();
var startDate = new Date(now.getFullYear(), now.getMonth(), now.getDate());
var endDate = new Date(2017, 0, 13)

var result = isEqual(startDate , endDate);
console.log(result);

于 2017-01-13T04:37:59.747 に答える