2017-01-16 2 views
1

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

У меня будет две переменные даты, CheckInStartDate и CheckInEndDate, которые будут поступать из API. Текущее время в системе.

Путь должен меняться в двух условиях.

  1. CheckInStartDate минус 1 час текущего времени
  2. CheckInEndDate плюс 1 час текущего времени.

Это код, который у меня есть.

$scope.checkIn = function() { 
    var ONE_HOUR = 60 * 60 * 1000; /* ms */ 
    $scope.checkInStartDate= 01/16/2017 09:06:00 AM; 
    $scope.checkInEndDate= 01/16/2017 11:06:00 AM; 
    var checkInStartDate=$scope.checkInStartDate; 
    var checkInEndDate=$scope.checkInEndDate; 
    var currentDate = new Date(); 
    var checkinStartDate=new Date(checkInStartDate); 
    var checkinEndDate = new Date(checkInEndDate); 

    if ((checkinStartDate.getTime()) > (currentDate.getTime() - ONE_HOUR) || 
      (checkinEndDate.getTime()) < (currentDate.getTime() + ONE_HOUR)) { 
     $location.path('/checkIn') 
    } 
    else{ 
     alert("cannot checkin"); 
    } 
} 
+2

Что на ваш вопрос именно? Ваш код выглядит в основном прекрасным для меня, за исключением того, что изначально установка '$ scope.checkInStartDate', как вы делаете, является синтаксической ошибкой (и аналогичным образом для даты окончания). –

+0

Вы забыли котировки вокруг даты-времени в строках 3 и 4. –

+0

Можете ли вы использовать https://momentjs.com/? это облегчило бы изменение дат? – Qpirate

ответ

1

Если я получил ваш вопрос правильно, вы хотите, чтобы регистрация в период времени между следующими два раза:

  • CheckInStartDate минус 1 час
  • CheckInEndDate плюс 1 час

Назовем первый пункт s и второй пункт e. Текущее время: c. В этом случае ваше состояние должно быть верно, когда

s < c < e 

В JavaScript это эквивалентно:

var s = new Date($scope.checkInStartDate).getTime() - ONE_HOUR; 
var e = new Date($scope.checkInEndDate).getTime() + ONE_HOUR; 
var c = new Date().getTime(); 
if (s < c && c < e) { 
    // check-in allowed 
} else { 
    // not allowed 
} 
+0

Спасибо за решение ур –

Смежные вопросы