检查当前时间是否在打开和打开之间。与Angularjs关闭时间

时间:2017-10-22 05:53:34

标签: javascript angularjs

我正在尝试根据当前时间,开放时间和结束时间来表明业务是否开放。这是我的时间格式。

$scope.open = "1970-01-01T13:00:00.000Z"; // We can ignore the dates
$scope.close = "1970-01-02T22:00:00.000Z"

有一个简单的&在Angularjs确定这个的确定方法?像

这样的东西
<div ng-if="currentTime >= open && currentTime < close"></div>

我找到了几个可以处理这个问题的片刻库,但我觉得导入一个完整的库对于基本的时间比较来说是过度的,而且我遇到的大多数javascript解决方案都没有处理这种时间格式。

感谢任何输入!

3 个答案:

答案 0 :(得分:1)

您可以比较日期。

const isStoreOpen = (currentTime, openTime, closedTime) => currentTime >= openTime && currentTime< closedTime;
isStoreOpen(Date.now(), new Date('01 01 1986'), new Date('01  01 2021')); //true
isStoreOpen(Date.now(), new Date('01 01 2018'), new Date('01  01 2021')); //false

答案 1 :(得分:1)

您可以创建一种直接检查商店状态并返回true或false的方法。

$scope.checkShopStatus = function() {
    var open = new Date("1970-01-01T13:00:00.000Z"); // We can ignore the dates
    var close = new Date("1970-01-02T22:00:00.000Z");
    var currentDate = new Date();
    if (currentDate >= open && currentDate <= close) {
        return true;
    }
    return false;
};

检查下面正在运行的演示代码

&#13;
&#13;
var app = angular.module('myApp', []);
app.controller('MyController', ['$scope', function($scope) {
  $scope.title = 'Hello world';

  $scope.checkShopStatus = function() {
    var open = new Date("1970-01-01T13:00:00.000Z"); // We can ignore the dates
    var close = new Date("1970-01-02T22:00:00.000Z");
    var currentDate = new Date();
    if (currentDate >= open && currentDate <= close) {
      return true;
    }
    return false;
  };
}]);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-controller='MyController' ng-app="myApp">
  <div>{{title}}</div>
  <div ng-if="checkShopStatus()">Open</div>
  <div ng-if="!checkShopStatus()">close</div>
</div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

提供的答案很有帮助,但我希望比较时代,而不是日期。我最终使用了moment.js并将我的日期格式化为24小时字符串&amp;然后比较

var currentTime = moment(new Date()).format('H:mm');
var openTime = moment(business.hours.sunday.open_time).format('H:mm');
var closeTime = moment(business.hours.sunday.close_time).format('H:mm');

function isStoreOpen(currentTime, openTime, closeTime){   
  if(currentTime >= openTime && currentTime <= closeTime){
    return true;
  }
  return false
}