3

2 つの JavaScript 日付があり、それらが同じ日付かどうかを知りたいです。2 つの日付は同じ日付であっても、時刻が異なる場合があります。Date1 は午後 3 時に設定でき、Date2 は午前 1 時に設定できます。

これら2つのオプションを試しましたが、どちらも機能しません:

// doesn't work when same date but different time
if (Date1.getTime() === Date2.getTime()) 

// gives true when dates are in different months
if (Date1.getUTCDate() === Date2.getUTCDate())  

1 日の実際の時間に関係なく、Date1 と Date2 が同じ日である場合に真になる最善の方法は何ですか?

ありがとう。

4

4 に答える 4

1

setHours:日付オブジェクトで関数を使用しhours、 、minutessecondsおよびmillisecondsをゼロに設定します。

var today = new Date().setHours(0,0,0,0)

特定の例では、次を使用できます

if(date1.setHours(0,0,0,0) === date2.setHours(0,0,0,0))

とはあなたdate1date2日付オブジェクトです。

setHours:

現地時間に従って指定された日付の時間を設定し、1970 年 1 月 1 日 00:00:00 UTC から更新された Date インスタンスによって表される時間までのミリ秒数を返します。

例:

var today1 = new Date().setHours(0,0,0,0); 
var today2 = new Date().setHours(1,0,0,0); //notice the 1 here

var today3 = new Date().setHours(0,0,0,0); 
var today4 = new Date().setHours(0,0,0,0);

console.log(today1 === today2); //returns false
console.log(today3 === today4); //returns true
于 2012-11-15T20:03:55.420 に答える
1

比べてみませんtoDateStringか?

于 2012-11-15T19:51:16.170 に答える
1

日付の日、月、年を取得し、それらが等しいかどうかを確認できます。

if (date1.getUTCDate() == date2.getUTCDate() && 
    date1.getUTCMonth() == date2.getUTCMonth() && 
    date1.getUTCFullYear() == date2.getUTCFullYear()) {
 // dates are on the same day
}
于 2012-11-15T19:55:06.820 に答える
1
var equalDates = function (a, b) {
  var a_time = a.getTime();
  var b_time = b.getTime();

  var a_days = Math.floor(a_time / (24 * 3600 * 1000));
  var b_days = Math.floor(b_time / (24 * 3600 * 1000));

  return (a_days === b_days);
};

最初にミリ秒単位で時間を取得します。次に、日数 (1970 年 1 月 1 日以降) に切り捨てて比較します。

于 2012-11-15T19:55:37.877 に答える