Как сравнить время в JavaScript?

6

У меня есть два раза в формате "HH: MM", я хочу их сравнить. У меня есть следующий код, чтобы получить время сейчас в моем формате:

current_time = new Date();
hour = current_time.getHours();
minute = current_time.getMinutes();
if(hour<10){hour='0'+hour} if(minute<10){minute='0'+minute}
my_time = hour+':'+minute;

И этот код должен получить время после вычитания разницы по GMT:

d = new Date()
var n = d.getTimezoneOffset();
var n1 = Math.abs(n);
var difference = (n1/60); 
my_time = my_time - (0+difference);

Теперь значение my_time должно сравниваться со значением match_time:

match_time = 10:00;//for example
if(my_time > match_time)
{
  alert('yes');
}
else
{
  alert('No');
}

как я могу сравнить эти значения как время, когда они являются строкой?

Теги:
string
date
casting
time

4 ответа

9

используйте объекты Date. Date.setHours() позволяет указать час, минуты, секунды

var currentD = new Date();
var startHappyHourD = new Date();
startHappyHourD.setHours(17,30,0); // 5.30 pm
var endHappyHourD = new Date();
endHappyHourD.setHours(18,30,0); // 6.30 pm

console.log("happy hour?")
if(currentD >= startHappyHourD && currentD < endHappyHourD ){
    console.log("yes!");
}else{
    console.log("no, sorry! between 5.30pm and 6.30pm");
}
  • 0
    Я знаю, что вопрос спрашивает, как сравнивать строки, но я думаю, что это лучшее решение для всей проблемы.
4
Date.parse('25/09/2013 13:31') > Date.parse('25/09/2013 9:15')

EDIT:

Обратите внимание, что вы разбираете произвольную дату, которая вас не интересует, она должна быть одинаковой с обеих сторон.

  • 0
    Date.parse зависит от реализации и в этом случае будет возвращать NaN в некоторых браузерах (например, Safari). ОП может сравнивать строки непосредственно как строки.
1
 if(Date.parse('01/01/2011 10:20:45') == Date.parse('01/01/2011 5:10:10')) {
  alert('same');
  }else{

  alert('different');

  }

The 1st January is an arbitrary date, doesn't mean anything.
0

Если бы у меня было достаточно представителей, чтобы проголосовать за решение @Gabo Esquivel. В течение нескольких дней я искал и тестировал решения, и это единственное, что сработало для меня.

Мне понадобилось тестирование условного оператора, если текущее время - 0830, и если да, сделайте что-нибудь. Оператор My if не работал, поэтому мне нужны другие примеры для работы.

//Business Hours: Saturday 8:30am-12pm; highlight Saturday table row.
function showSaturdayHours() {
    var today = new Date();
    var weekday = today.getDay();
    var saturdayOpen = new Date();
    saturdayOpen.setHours(8, 30, 0);
    var saturdayClose = new Date();
    saturdayClose.setHours(12, 0, 0);

if (weekday == 6) {
    $('#saturday-row').addClass('row-blue'); //highlight table row if current day is Saturday.
    if (today >= saturdayOpen && today < saturdayClose) {
        document.getElementById('saturday-open').innerHTML = 'Open';
    } else {
        document.getElementById('saturday-open').innerHTML = 'Closed';
    }
  }
}

Таблица рабочих часов: JSFiddle

Ещё вопросы

Сообщество Overcoder
Наверх
Меню