2016-06-28 36 views
1
<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角度濾波,比較JSON文件日期爲今天的日期

x.dateTime | date: MM/dd/yyyy得到這原來是過濾時的日期和時間。

我試圖完成的是將這個「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" 

} 
+0

製作'todaysDat e'JavaScript日期對象並使用'ng-if =「x.dateTime.valueOf()=== todaysDate.valueOf()」'。 –

+0

嗯,沒有爲我工作,https://plnkr.co/edit/r2qtcU3vaYIq04c5TVKG?p=preview,任何想法,如果我失去了什麼? – Snorlax

+0

您可以請將代碼發佈到問題本身嗎?我從工作中看不到plnkr.co。另外,SO需要代碼。 –

回答

4

因爲你正在處理的日期和時間,事情可能變得棘手快。我會建議使用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"

+1

希望我能更多地讚揚這一點。在處理日期時,Moment.js將避免太多令人頭疼的事情...... – danii

+0

真棒,工作!我最終使用了第二段代碼,但我會研究那個時候的庫。 – Snorlax

0

您可以添加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> 
0

見FOLL鏈接:

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

// time.json

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

}] 

//script.js

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

你的問題就解決了