获取当前时间并与数组进行比较

Get the current time and compare with array

本文关键字:数组 比较 时间 获取      更新时间:2023-09-26

我想获取当前时间并将其与数组进行比较

目录:

<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时间在这里。