我是'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));
}
1>} time
不大于45 mins
任何指导赞赏!
答案 0 :(得分:1)
使用momentjs解决方案。
首先通过凉亭安装时刻:
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分钟,现在位于圆圈中间。然后这个圈内的一切都很好,外面的一切都是错的。
你也想知道某件事是否已经过去,所以是在一个圆圈的左侧。
因此我们假设中间是代数 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));