我想获取当前时间并将其与数组进行比较
HTML:
<div ng:app ng:controller="Scoper"> <p> Now Playing:</p> {{nowPlaying}} <br /> <p> Current Time:</p> {{currentTime | date:'HH:mm'}} </div>
Angular.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;
}
}
注意:我知道我的问题来自于我两次比较的时间,但我该怎么做?
答案 0 :(得分:3)
这是完整的代码
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 Sample
答案 1 :(得分:0)
根据我的理解,你想比较格式化的字符串,而不是过滤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/它对我有用。
但是我认为你真正想要的是,获得Current HH:mm是否在08:00 - 08:30的Timespan中,你呢?
你可以做到这一点fiddle
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-array按时间排序时才有效!否则需要修改。
答案 2 :(得分:0)
另一种纯粹的JS替代方案来解析你的时间。如果您将时间保存为12小时格式,则可以使用en-US,如果是24小时格式,则可以使用de-DE。
$scope.currentTime = new Date().toLocaleTimeString('en-US', {
hour: '2-digit',
minute: '2-digit'
}).replace(/\./g, '/');
有了这个,您可以使用现有的比较。 您也可以根据您是否希望拥有整个日期进行扩展。 只需使用toLocaleDateString。
有关javascript时间的更多信息here。