我们能否将控制器中的 JSON 数据(MM/DD/YYYY 格式)与自定义过滤器中的今天日期进行比较,并在数组中显示过滤列表
Can we compare JSON data(MM/DD/YYYY format) in controller with today's date in custom filter and display filtered list in array
我正在尝试将我们从 new Date() 获得的今天日期与 MM/DD/YYYY 格式的日期进行比较,并使用我的自定义过滤器过滤数组中的数据列表。有没有办法比较这个……我试过将小时数设置为 (0,0,0,0) 并进行比较,但它不起作用……我们也可以在 json 数据中设置小时数并进行比较吗? ..我的 javascript 看起来像这样..这是 plunker link。 http://plnkr.co/edit/unB6m8ZyqGnmiYfeaLoP?p=preview。我可以比较 id:4,5 但不能比较 1,2,3 因为日期格式不同...主要目的是根据用户输入显示最近几天的数据..有没有办法比较这两个日期并过滤所需的数据。
// Code goes here
var app = angular.module('tempfilter', []);
app.controller('MainCtrl', function($scope) {
$scope.sensordata = [
{id:'id:1',name:'Rob',Date:"5/11/2014","Temp":42},
{id:'id:1',name:'Don',Date:"2015-05-11","Temp":42},
{id:'id:2',name:'Bob',Date:"2015-02-22T17:16:14.720Z","Temp":50},
{id:'id:3',name:'Tom', Date: new Date().getDate(),"Temp":60},
{id:'id:4',name:'Sinclair',Date: new Date(),"Temp":65}
];
$scope.filter = { value:16490 };
});
app.filter('tempo', function() {
return function( items, field, value) {
var filtered = [];
var epoch = new Date(); // today!
epoch.setHours(0,0,0,0);
epoch.setDate(epoch.getDate()-value);
angular.forEach(items, function(item) {
if (item[field]>epoch){
filtered.push(item);
}
});
return filtered;
};
});
我想你可以使用日期的 getTime() 方法。例如:
var today = new Date().getTime()
var jsonDate = new Date("2015-02-20").getTime()
然后根据需要比较 today 和 jsonDate。 getTime() 函数 returns 自 1970/01/01 以来的毫秒数。希望对您有所帮助。
旁注:我不知道 angular.js。
正如 Anand 所说,您尝试过 Date.getTime()
吗? new Date()
可以为您的所有示例生成一个 Date 对象,使用 getTime()
您可以获得毫秒数,因此您可以更轻松地进行比较。
您可能希望在创建 JSON 时获取 getTime,这样您就不需要每次都在循环中计算它。
应该看起来像:
// Code goes here
var app = angular.module('tempfilter', []);
app.controller('MainCtrl', function($scope) {
$scope.sensordata = [
{id:'id:1',name:'Rob',Date:"5/11/2014","Temp":42},
{id:'id:1',name:'Don',Date:"2015-05-11","Temp":42},
{id:'id:2',name:'Bob',Date:"2015-02-22T17:16:14.720Z","Temp":50},
{id:'id:3',name:'Tom', Date: new Date().getDate(),"Temp":60},
{id:'id:4',name:'Sinclair',Date: new Date(),"Temp":65}
];
$scope.filter = { value:16490 };
});
app.filter('tempo', function() {
return function( items, field, value) {
var filtered = [];
var epoch = new Date(); // today!
epoch.setHours(0,0,0,0);
epoch.setDate(epoch.getDate()-value);
//HERE
epoch = epoch.getTime();
angular.forEach(items, function(item) {
//HERE
if (new Date(item[field]).getTime() > epoch){
filtered.push(item);
}
});
return filtered;
};
});
我正在尝试将我们从 new Date() 获得的今天日期与 MM/DD/YYYY 格式的日期进行比较,并使用我的自定义过滤器过滤数组中的数据列表。有没有办法比较这个……我试过将小时数设置为 (0,0,0,0) 并进行比较,但它不起作用……我们也可以在 json 数据中设置小时数并进行比较吗? ..我的 javascript 看起来像这样..这是 plunker link。 http://plnkr.co/edit/unB6m8ZyqGnmiYfeaLoP?p=preview。我可以比较 id:4,5 但不能比较 1,2,3 因为日期格式不同...主要目的是根据用户输入显示最近几天的数据..有没有办法比较这两个日期并过滤所需的数据。
// Code goes here
var app = angular.module('tempfilter', []);
app.controller('MainCtrl', function($scope) {
$scope.sensordata = [
{id:'id:1',name:'Rob',Date:"5/11/2014","Temp":42},
{id:'id:1',name:'Don',Date:"2015-05-11","Temp":42},
{id:'id:2',name:'Bob',Date:"2015-02-22T17:16:14.720Z","Temp":50},
{id:'id:3',name:'Tom', Date: new Date().getDate(),"Temp":60},
{id:'id:4',name:'Sinclair',Date: new Date(),"Temp":65}
];
$scope.filter = { value:16490 };
});
app.filter('tempo', function() {
return function( items, field, value) {
var filtered = [];
var epoch = new Date(); // today!
epoch.setHours(0,0,0,0);
epoch.setDate(epoch.getDate()-value);
angular.forEach(items, function(item) {
if (item[field]>epoch){
filtered.push(item);
}
});
return filtered;
};
});
我想你可以使用日期的 getTime() 方法。例如:
var today = new Date().getTime()
var jsonDate = new Date("2015-02-20").getTime()
然后根据需要比较 today 和 jsonDate。 getTime() 函数 returns 自 1970/01/01 以来的毫秒数。希望对您有所帮助。
旁注:我不知道 angular.js。
正如 Anand 所说,您尝试过 Date.getTime()
吗? new Date()
可以为您的所有示例生成一个 Date 对象,使用 getTime()
您可以获得毫秒数,因此您可以更轻松地进行比较。
您可能希望在创建 JSON 时获取 getTime,这样您就不需要每次都在循环中计算它。
应该看起来像:
// Code goes here
var app = angular.module('tempfilter', []);
app.controller('MainCtrl', function($scope) {
$scope.sensordata = [
{id:'id:1',name:'Rob',Date:"5/11/2014","Temp":42},
{id:'id:1',name:'Don',Date:"2015-05-11","Temp":42},
{id:'id:2',name:'Bob',Date:"2015-02-22T17:16:14.720Z","Temp":50},
{id:'id:3',name:'Tom', Date: new Date().getDate(),"Temp":60},
{id:'id:4',name:'Sinclair',Date: new Date(),"Temp":65}
];
$scope.filter = { value:16490 };
});
app.filter('tempo', function() {
return function( items, field, value) {
var filtered = [];
var epoch = new Date(); // today!
epoch.setHours(0,0,0,0);
epoch.setDate(epoch.getDate()-value);
//HERE
epoch = epoch.getTime();
angular.forEach(items, function(item) {
//HERE
if (new Date(item[field]).getTime() > epoch){
filtered.push(item);
}
});
return filtered;
};
});