0

我有两个日期:

date1 = "2013-07-08 12:30:00"

date2 = "2013-07-08 13:30:00"

现在在javascript中,我想匹配这两个日期,它们不匹配,而不是我想删除约会,如果它们匹配则无事可做。

我试过这段代码,但它不工作:

  if(date1 == date2)// Event already exists
  {
      // do nothing
  }
  else
  {
      // delete the record.
  }

我也尝试与“new Date(date1) == new Date(date2)”进行比较,但它也不起作用。

我的代码或日期格式有问题。谁能知道如何做到这一点以及我在这段代码中哪里错了?

提前致谢。

4

3 回答 3

1

两个不同的对象永远不会相同,您必须比较组成 unix 时间戳的数字:

var date1 = "2013-07-08 12:30:00",
    date2 = "2013-07-08 13:30:00";

var d1 = new Date(date1);
var d2 = new Date(date2);

if (d1.getTime() == d2.getTime()) {

}

小提琴

于 2013-07-10T00:04:03.237 回答
0

Adeno 有一个有效的答案,但如果日期是毫秒,则会失败(如果您使用有效的日期字符串,则在 OP 的示例中不是这种情况)。为确保您按分钟或天数比较日期,您可以执行以下操作:

function sameTime(dt1,dt2){
  //round the dates to the minutes
  var t1=new Date(dt1);
  var t2=new Date(dt2);
  t1.setSeconds(0,0);
  t2.setSeconds(0,0);
  return t1.toString()===t2.toString();
}
function sameDay(dt1,dt2){
  //round the dates to the day
  var t1=new Date(dt1);
  var t2=new Date(dt2);
  t1.setHours(0,0,0,0);
  t2.setHours(0,0,0,0);
  return t1.toString()===t2.toString();
}
function sameMonth(dt1,dt2){
  //round the dates to the month
  var t1=new Date(dt1);
  var t2=new Date(dt2);
  t1.setHours(0,0,0,0);
  t2.setHours(0,0,0,0);
  t1.setDate(1);
  t2.setDate(1);
  return t1.toString()===t2.toString();
}
var date1 = "2013-07-08T12:30:00",
    date2 = "2013-07-08T13:30:00";
var d1 = new Date(date1);
var d2 = new Date(date2);

console.log(sameTime(d1,d2));//precise to the minute
console.log(sameDay(d1,d2));//precise to the day
console.log(sameMonth(d1,d2));//precise to the month
于 2013-07-10T00:55:06.797 回答
0

这个对我有用:

var date1 = "2013-07-08 12:30:00";

var date2 = "2013-07-08 12:30:00";
var date3 = "2013-07-08 12:00:00";

console.log(date1 == date2); //true
console.log(date1 == date3); //false

Jsfiddle 链接

于 2013-07-10T00:49:42.883 回答