2017-01-16 17 views
1

時間に基づいてパスを変更する必要がある1つの条件が付いています。現在の時刻と1時間の条件

私はCheckInStartDateCheckInEndDateの2つの日付変数をAPIから取得します。 現在の時刻はシステムの日付時刻です。

パスは2つの条件で変更する必要があります。

  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

私が正しくあなたの質問を得た場合は、チェックイン、次の2つの時間の間の期間にできるようにしたい:

  • CheckInStartDateマイナス1時間
  • CheckInEndDateプラス1時間

最初の点はsとし、2番目の点はeとしましょう。現在の時刻はcです。 JavaScriptでは際

s < c < e 

この場合、あなたの条件が真である必要があり、これは同等です:

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

ありがとうございました –

関連する問題