检查时间差是否小于45分钟,并运行功能-AngularJS
Check if time difference is less than 45 mins and run function - AngularJS
用这样的代码在PHP中做这件事很容易;
if (strtotime($given_time) >= time()+300) echo "You are online";
但是在SO上找不到任何可以在javascript中做到这一点的东西。我想检查给定时间和当前时间之间的差异是否小于45分钟
例如
$scope.given_time = "14:10:00"
$scope.current_time = new Date();
我只关心时间部分。我需要从new Date();
中提取时间部分,然后进行比较。
那么这应该是true
我如何使用Javascript实现这一点:
if ($scope.given_time - $scope.current_time < 45 minutes) {
// do something
}
Javascript使用以毫秒为单位的unix时间戳,因此它类似于strtotime的输出(使用秒)。
var date = new Date();
然后你需要从毫秒开始计算。(分钟*60*1000)
您也可以使用date.parse()
将字符串解析为毫秒,就像PHP中的strtotime()
解析为秒一样。
完整:
var date = new Date();
var last = new Date('Previous Date'); // or a previous millisecond timestamp
if ( ( date - last ) > ( 45 * 60 * 1000 ) ) {
// do something
}
你可以使用一个静态日期来比较时间,如果你排除日期,这正是strtotime的作用:
var last = new Date('1/1/70 14:10:00');
var date = new Date('1/1/70 14:30:00');
然而,如果你试图比较跨越一天界限的时间,这种方法就会失败。
试试这个:
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);
if (minutes > 45 || (minutes < 0 && minutes > -1395)) {
// greater than 45 is todays time is above 45 minutes
// less than 0 means the next available time will be tomorrow and the greater than -1395 means it will be more than 45 minutes from now into tomorrow
document.write(time + ': true<br />');
} else {
document.write(time + ': false<br />');
}
}
checkTime("14:10:00");
checkTime("16:30:00");
checkTime("17:10:00");
有一个JavaScript方法,名为getMinutes();您可以使用仅获取分钟数并进行比较。
你的代码应该看起来像:
var received_time = "14:10:00".split(':');
var minute = '';
if(received_time.length === 3) {
minute = parseInt(received_time[1], 10);
}
$scope.given_time = minute;
var the_time = new Date();
$scope.current_time = the_time.getMinutes();
现在你可以做你的事情了:
if ($scope.given_time - $scope.current_time < 45 minutes) {
// do something
}
使用moment.js这样的库,您可以简单地将这两次进行区分。
var $log = $("#log");
/* Difference between just times */
$log.append("Difference between times'n");
var givenTime = moment("14:10:00", "HH:mm:ss");
var minutesPassed = moment("14:30:00", "HH:mm:ss").diff(givenTime, "minutes");
$log.append("Minutes passed: " + minutesPassed + "'n");
if (minutesPassed < 45) {
$log.append(minutesPassed + " minutes have elapsed. Event Triggered." + "'n");
}
/* Better: Difference between times that have dates attached to them and cross a day boundary. */
$log.append("'n'nDifference between dates with times'n");
givenTime = moment("2015-12-03 23:33:00");
minutesPassed = moment("2015-12-04 00:14:00").diff(givenTime, "minutes");
$log.append("Minutes passed: " + minutesPassed + "'n");
if (minutesPassed < 45) {
$log.append(minutesPassed + " minutes have elapsed. Event Triggered." + "'n");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://momentjs.com/downloads/moment.js"></script>
<p>Results:</p>
<hr>
<pre id="log"></pre>
<hr>
注意事项:如果给定时间是昨天,例如11:30pm,而当前时间是12:10am则会得到错误的结果。如果这种类型的事情对您的用例来说是一个问题,您会希望使用日期和时间。
moment.js文档
http://momentjs.com/docs/
力矩文档的角度指令
https://github.com/urish/angular-moment/blob/master/README.md
相关文章:
- '.在'单击“不运行”功能
- 流星 - 观察自动运行功能内未运行
- on点击不运行功能??(可能是Javascript错误?)
- 加载检查单选按钮值并运行功能
- 如何在浏览器中完成图像大小调整后运行功能?(JS/JQuery)
- 在IE中下载文件时运行功能
- 应用程序关闭前的离子运行功能
- 离子选项卡在选择后运行功能
- 检查URL和运行功能
- Chrome扩展赢得't点击按钮运行功能
- 检查时间差是否小于45分钟,并运行功能-AngularJS
- 对输入更改和复选框更改运行功能
- 如何运行功能与参数点击
- 混淆自动运行功能
- 选择按钮运行功能
- 运行功能按钮点击作为创建者用户-谷歌电子表格
- 离子应用程序运行功能在第二次点击
- 谷歌图表-运行功能后绘制
- 具有对焦运行功能的按钮在'输入'
- Onchange选择运行功能