我正在尝试根据当前时间,开放时间和结束时间来表明业务是否开放。这是我的时间格式。
$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解决方案都没有处理这种时间格式。
感谢任何输入!
答案 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;
};
检查下面正在运行的演示代码
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;
答案 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
}