2012-02-07 2 views
0

Я знаю, что это может быть сделано:Каков наилучший способ сравнения времени компонент объекта даты в JavaScript

  1. Сравнение часов и минут и т.д ..
  2. Сравнение Date.getTime()% 86400000
  3. сравнивая date.toLocaleTimeString()

есть ли прямой способ?

+0

Если сравнивать с понедельника по 1pm во вторник на выход 1pm результат, указывающий, что время равны или 24 часов друг от друга? – gilly3

+0

равно, я имею в виду, что дата не имеет значения только времени – Daniel

+0

Как насчет дробных секунд? 23: 11: 42.223 так же, как 23: 11: 42.489? –

ответ

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

Я думаю, что лучший метод является вторым один. Но это можно сделать так.

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; 
Смежные вопросы