【问题标题】:Angular Filter, compare JSON file date to today's date角度过滤器,将 JSON 文件日期与今天的日期进行比较
【发布时间】:2016-06-28 18:32:31
【问题描述】:
<p id="appt_time" ng-if="x.dateTime | date: MM/dd/yyyy == {{todaysDate}}">SHOW ME IF TRUE{{todaysDate}} </p>

Plunkr:https://plnkr.co/edit/r2qtcU3vaYIq04c5TVKG?p=preview

x.dateTime | date: MM/dd/yyyy 根据我的 json 文件获取过滤后的日期和时间:06/18/2016

我想要完成的是将此“x.dateTime”与今天的日期进行比较,并在陈述为真时显示该段落。所以在我的角度文件中,我有一个$scope.todaysDate = "06/18/2016",但该段落没有显示。

HTML 文件:

<!DOCTYPE html>
<html>

  <head>
    <link rel="stylesheet" href="style.css">
    <script src="https://code.angularjs.org/1.5.5/angular.js"></script>
    <script src="script.js"></script>

  </head>

  <body ng-app="myApp" ng-controller="myCtrl">
<div ng-repeat="x in information">

  <!--Compare Json Object to Javascript Object-->
  <p ng-if ="x.dateTime">{{x.dateTime | date: MM/dd/yyyy }}</p> 
  <!--Compare Json Object to Today's Date-->
<p id="appt_time" ng-if="x.dateTime.valueOf() === todaysDate.valueOf()">Open in: {{todaysDate}} </p>
</div>
  </body>

</html>

JS 文件:

// declare a module
var myAppModule = angular.module('myApp', []);
  var todaysDate = new Date();


// configure the module.
// in this example we will create a greeting filter
myAppModule.controller('myCtrl', ['$scope','$http', function($scope, $http) 
{

    $scope.todaysDate = todaysDate;
    $scope.test = "Volvo";

    $http.get("time.json")
    .then(function(data) {
        $scope.information = data;
    });
}]
);

JSOn 文件:

{
  "dateTime":"2016-06-18T18:41:00.748-04:00"

}

【问题讨论】:

  • todaysDate 设为JavaScript Date 对象并使用ng-if="x.dateTime.valueOf() === todaysDate.valueOf()"
  • 嗯,对我不起作用,plnkr.co/edit/r2qtcU3vaYIq04c5TVKG?p=preview,知道我是否遗漏了什么?
  • 您能否将代码发布到问题本身?我在工作中看不到 plnkr.co。此外,SO 需要问题中的代码。
  • 我猜x.dateTime 实际上不是 JavaScript Date 对象。
  • 好的,我发布了代码

标签: javascript angularjs json date


【解决方案1】:

因为您要处理日期和时间,所以事情很快就会变得棘手。我建议使用Moment.js library,因为它让这变得超级简单:

ng-if="moment.utc(x.DateTime).isSame(todaysDate, 'day')"

"day" 表示您希望比较这两个值的粒度。但是,即使没有那个库,它也相对容易:

ng-if="x.DateTime.substring(0, 10) === todaysDate"

$scope.todaysDate 更改为"2016-06-18" 的位置。

【讨论】:

  • 希望我能多点赞。在处理日期时,Moment.js 会避免这么多令人头疼的问题……
  • 太棒了!我最终使用了第二段代码,但我会研究那个时刻库。
【解决方案2】:

您可以添加一个validate 函数,如果日期是今天,它将返回true。不要忘记注入$filter

$scope.validate = function(date) {
   return $filter('date')(date. 'your format') === $filter('date')(new Date(). 'your format');
}

在html中

<p id="appt_time" ng-if="validate(x.dateTime)">SHOW ME IF TRUE{{x.dateTime}} </p>

【讨论】:

    【解决方案3】:

    查看以下链接:

    https://plnkr.co/edit/ZLJB5i1nQu9RYUV5FAX3?p=preview

    //时间.json

    [{
      "dateTime":"2016-06-18T18:41:00.748-04:00"
    
    }]
    

    //script.js

     $http.get("time.json")
        .then(function(response) {
            $scope.information = response.data;
            debugger
        });
    

    你的问题解决了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-03
      • 1970-01-01
      • 2012-05-10
      • 1970-01-01
      相关资源
      最近更新 更多