我正在使用Java脚本开发一个windows 8应用程序
我将获得一些rss,并使用Google将其转换为JSON格式对象。然后,我得到了rss提要的某种JSON对象数组。我需要做的是,我想要根据公布的日期在数组的所有对象中选择几个对象。这意味着我希望从6小时前发布的数组中获取所有对象(在当前日期和6小时之前发布,其他对象除外)。有人能帮我吗.?
我使用这个代码来获取所有的对象。
function loadNews() {
var allEntries = [];
var pendingRequestCount = listOfFeed.length;
var onRequestFinished = function () {
pendingRequestCount--;
if (pendingRequestCount === 0) {
processItems(allEntries);
}
};
for (var x = 0; x < listOfFeed.length; x++) {
feedburnerUrl = listOfFeed[x].url,
feedUrl = "http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&output=json&num=999&q=" + encodeURIComponent(feedburnerUrl);
WinJS.xhr({
url: feedUrl,
responseType: "rss/json"
}).done(function complete(result) {
var jsonData = JSON.parse(result.response);
var entries = jsonData.responseData.feed.entries;
allEntries = allEntries.concat(entries);
allEntries.sort(function (entry1, entry2) {// Compare the entries by publish date
return Date.parse(entry2.publishedDate) - Date.parse(entry1.publishedDate); // return get milisecond
});
onRequestFinished();
});
} //loop x finish}}
根据上述方法,allEntries提供了JSON对象数组
非常感谢你的回答
发布于 2013-10-09 03:23:43
您必须遍历每个条目并比较日期。对于每个通过测试的日期,将其添加到另一个数组中。例如。
var newEntries = JSON.parse(result.response),
filteredEntries = [],
i,
testDate = new Date();
testDate = testDate.setHours(testDate.getHours() - 6);
for(i = 0; i < newEntries.length; i++) {
if(newEntries[i].publishedDate > testDate) {
filteredEntries.push(newEntries[i]);
}
}new Date()总是返回当前日期
Date.getHours()返回日期的小时组件
Date.setHours(hour)设置日期的小时组件
如果hour是负值,则日期将转到前一天。例如,如果您的日期是2013-5-3 04:33,则将hour组件设置为-2将日期更改为2013-5-2 22:33
在上面的例子中,如果时间是凌晨2:45,它将时间组件设置为-4,这将导致它在晚上8:45进行测试。前一天。
https://stackoverflow.com/questions/19261203
复制相似问题