角度函数检查时间是否在给定时间的45分钟内,如果现在是在时间之后

时间:2016-02-08 20:02:05

标签: javascript angularjs

我是'angularJS'的新手并且很难创建一个功能,可以检查'{1}}的'时间'是否少于45分钟,以及now是否在time的过去是now

之后的过去
time

这是我到目前为止,它检查function checkTime(time) { var date = new Date(); var date1 = new Date((date.getMonth() + 1) + "/" + date.getDate() + "/" + date.getFullYear() + " " + time); var minutes = (date1.getTime() - date.getTime()) / (60 * 1000); return (minutes > 40 || (minutes < 0 && minutes > -1395)); } } time不大于45 mins

任何指导赞赏!

2 个答案:

答案 0 :(得分:1)

使用momentjs解决方案。

Angular directive for moment

Moment js docs

首先通过凉亭安装时刻:

bower install angular-moment moment --save

在您的应用中包含片刻:

<script src="components/moment/moment.js"></script>
<script src="components/angular-moment/angular-moment.js"></script>

(如果您正在使用grunt,请运行grunt服务器,它将自动添加这些脚本,因为您在--save期间使用bower install

将模块angularMoment添加到您的应用中。

var myapp = angular.module('myapp', ['angularMoment']);

现在您可以在控制器中使用momentjs。 我建议一下,因为在日期上操作比使用纯javascript更容易。

您的问题是在指定时间(45分钟)内找到它之前或之后的某个时间点。在我看来,想象你有半径圆。半径是45分钟,现在位于圆圈中间。然后这个圈内的一切都很好,外面的一切都是错的。 enter image description here

你也想知道某件事是否已经过去,所以是在一个圆圈的左侧。

因此我们假设中间是代数 0

n 是圆半径。 (45分钟)

如果 t 是参数(给定时间),那么检查它是否在里面:

f(t) = n - t
if f(t) is between 0 and t then it belongs on a right side. 
if f(t) is between t and 2t then it belonds and in on left side ( past ). 

通过这个准备,在momentjs中实施的时间:

function checktime(time){
    var now = moment(new Date());
    var later = now.add(45*60,'seconds');
    var time = moment(new Date(time));
    var ft = later.millisecond() - time.millisecond();
    if ( ( ft > 0 ) && ( ft < 2700000 ) )//45*60*1000
        return false;//future
    if ( ( ft > 2700000 ) && ( ft < 2*2700000 ) )
        return false;//past
    return true;
}

答案 1 :(得分:0)

请尝试以下。

var date = new Date();
var date1 = new Date((date.getMonth() + 1) + "/" + date.getDate() + "/" + date.getFullYear()+ " " + time);

var diff = date.getTime() - date1.getTime();
var minutes = diff.getMinutes();
return (minutes > 40 || (minutes < 0 && minutes > -1395));