我有以下脚本加入2个Feed并在屏幕上显示
$.when( //get feed 1, //get feed 2 ).done(function(a1, a2){
var data = a1[0]response.Data.feed.entries.concat(a2[0].responseData.feed.entries);
var sorted = data.sort(function(a, b) {
if(a.publishedDate > b.publishedDate) {
return 1
}
if(a.publishedDate < b.publishedDate) {
return -1
}
return 0
});
for( i = o; i <= sorted.length - 1; i++ ) {
document.write(sorted[i].title);
document.write(sorted[i].publishedDate);
}
});
返回所有行,但不对行进行排序。排序似乎完全随机。我假设它是因为日期在JSON数据中格式如下:
Mon, 23 Sep 2013 04:37:45 -0700
-0700
是什么意思答案 0 :(得分:4)
-0700
表示UTC偏移UTC-07:00
。由于Alnitak表示此特定格式已被Date.parse
接受,因此如果您使用其中一种可接受的格式,则可以使用本机JavaScript进行排序。
var dateStrings,
sortDates;
dateStrings = [
'Mon, 23 Sep 2013 04:37:45 -0700',
'Sun, 22 Sep 2013 05:27:32 +0300',
'Mon, 23 Sep 2013 03:14:17 -0700'
];
sortDates = function(dateStrings) {
return dateStrings.sort(function(a, b) {
return new Date(a) - new Date(b);
});
};
console.log(sortDates(dateStrings));
您的代码段中的变量sorted
可以通过以下方式正确检索:
var sorted = data.sort(function(a, b) {
return new Date(a.publishedDate) - new Date(b.publishedDate);
});
答案 1 :(得分:1)
您可以将字符串传递给new Date(...)
以转换为真实的Date
对象。
要排序,您还需要传递特定的排序函数,因为数组上的默认Javascript sort
只是将元素转换为字符串并比较转换结果(因此任何"Mon"
天都会被放置在任何"Sun"
天之前。
应该有用的东西是
dates.sort(function(a, b){ return a - b; });
答案 2 :(得分:1)
嗯,-0700表示..是7 hours earlier than Greenwich Mean
...你可以在wikipedia中查看更多内容
如果你想正确转换任何日期,我强烈建议你使用库DateJS(http://www.datejs.com/)
你可以使用合成糖.. !!创建你的对象......
Date.parse('Thu, 1 July 2013 20:20:20');
瞧...很容易......