在javascript中比较日期对象的时间组件的最佳方法是什么

时间:2012-02-07 06:34:13

标签: javascript date time

我知道这可以通过以下方式完成:

  1. 比较小时和分钟等。
  2. 比较date.getTime()%86400000
  3. 比较date.toLocaleTimeString()
  4. 有直接的方法吗?

2 个答案:

答案 0 :(得分:1)

如果您只想比较时间组件,可以执行以下操作:

function isTimeEqual(d0, d1) {
  return d0.getHours() == d1.getHours() &&
         d0.getMinutes() == d1.getMintues() &&
         d0.getSeconds() == d1.getSeconds() &&
         d0.getMilliseconds() == d1.getMilliseconds();
}

你可能不关心毫秒。

如果您知道在该位置从未观察到夏令时,或者时间是UTC,您可以这样做:

var msPerDay = 24*60*60*1000;
return d0 % msPerDay == d1 % msPerDay;

return !((d0 - d1) % 8.64e7);

答案 1 :(得分:1)

我认为最好的方法是第二种方法。但它可以这样做。

var d1 = new Date("10/10/2008 12:00");
var d2 = new Date("10/12/2008 12:30");
var diff = (d2-d1) % 86400000;

如果你想让它适用于d1> D2,

var d1 = new Date("10/11/2010 12:00");
var d2 = new Date("10/10/2010 12:30");

d1.setFullYear(d2.getFullYear());
d1.setMonth(d2.getMonth());
d1.setDate(d2.getDate());
var diff = d2-d1;