获取当前时间并与数组进行比较
Get the current time and compare with array
我想获取当前时间并将其与数组进行比较
目录:
<div ng:app ng:controller="Scoper"> <p> Now Playing:</p> {{nowPlaying}} <br /> <p> Current Time:</p> {{currentTime | date:'HH:mm'}} </div>
棱角.js:
function Scoper($scope) {
var days = [
{ id: 0 , time:'08:00', channel: 'Gaming'},
{ id: 0 , time:'08:30', channel: 'MUSIC'},
{ id: 0 , time:'09:00', channel: 'Bob the Builder'},
{ id: 0 , time:'09:30', channel: 'Power puff girls'},
{ id: 0 , time:'10:00', channel: 'Spongbob'},
];
/*Get Current time */
$scope.currentTime = new Date();
if(days.time === currentTime){
$scope.nowPlaying= days.channel;
}
}
注意:我知道我的问题来自我比较两次的时候,但我该怎么做呢?
小提琴上的样本
这是完整的代码
.HTML
<div ng-app>
<h2>Todo</h2>
<div ng-controller="Scoper">
<p> Now Playing:</p>
{{nowPlaying}}
<br />
<p> Current Time:</p>
{{currentTime | date:'HH:mm'}}
</div>
</div>
JScript
function Scoper($scope) {
var days = [
{ id: 0 , time:'20:20', channel: 'Gaming'},
{ id: 0 , time:'20:18', channel: 'MUSIC'},
{ id: 0 , time:'20:22', channel: 'Bob the Builder'},
{ id: 0 , time:'20:16', channel: 'Power puff girls'},
{ id: 0 , time:'20:18', channel: 'Spongbob'},
];
/*Get Current time */
var currentTime = new Date()
var hours = currentTime.getHours()
var minutes = (currentTime.getMinutes() < 10? '0' : '') + currentTime.getMinutes();
var nowTime = hours + ":" + minutes;
$scope.currentTime = nowTime;
for (var i = 0; i < days.length; i++) {
if(days[i].time == nowTime){
$scope.nowPlaying= days[i].channel;
break;
}
else{
$scope.nowPlaying= "Nothing";
}
}
}
JSFiddle 示例
据我了解,您想比较格式化的字符串并过滤 days 数组。
这可以像这样完成:
var day = days.filter(
function(e) {
if(e.time === $scope.currentTime.getHours() + ":" + $scope.currentTime.getMinutes())
{ return e};
});
if(day.length > 0){
$scope.eee = day[0].channel;
}
我更新了你的小提琴:http://jsfiddle.net/ow48k6aa/它对我有用。
但我认为你真正想要的是,了解当前的 HH:mm 是否在 08:00 - 08:30 的时间跨度内,是吗?
比你能做这个小提琴
var day = days.filter(
function(e) {
var t = e.time.split(":");
var minutes = parseInt(t[0])*60 + parseInt(t[1]);
var currMinutes = $scope.currentTime.getHours() * 60 + $scope.currentTime.getMinutes();
if(currMinutes < minutes)
{ return e};
});
if(day.length > 0){
$scope.eee = day[0].channel;
}
注意!以上仅在 days- 数组按时间排序时才有效!否则需要修改。
另一种纯粹的JS替代方案来解析你的时间。如果您将时间保存为 12 小时格式,则可以使用 en-US,如果是 24 小时格式,则可以使用 de-DE。
$scope.currentTime = new Date().toLocaleTimeString('en-US', {
hour: '2-digit',
minute: '2-digit'
}).replace(/'./g, '/');
有了这个,您可以使用现有的比较。您还可以根据是否也想拥有整个日期来扩展此内容。只需使用 toLocaleDateString。
更多关于javascript时间在这里。
相关文章:
- 如何使用 node.js 比较两个 json 数组
- MongoDB-通过比较集合和对象的数组来返回现有字段的数组
- underline-js:将键对象与数组键对象进行比较,如果存在,则移除现有的添加新的
- 比较二维数组js
- 如何放置ÅÄ和#214;在javascript数组中,然后将其与html文本进行比较
- 数组比较并获取计数
- Javascript数组比较问题
- 用于在数组比较之后由于某种原因而爆发循环
- javascript数组比较多次循环
- 这是有效的JavaScript数组比较算法
- 2D数组比较-嵌套循环错误
- 数组比较在Chrome工作,但不与Chrome IPAD
- 对象/数组比较算法,以确定共性/相似性
- 谷歌电子表格中的数组比较
- 整数数组比较
- Javascript数组比较
- node.js中的数组比较
- JavaScript关联数组比较
- Javascript数组比较
- JavaScript数组比较的奇怪行为