我有一个javascript / jQuery,我从AJAX调用中得到一个列表。 我遍历此列表并希望将项目拆分到各个区域,这些区域基于项目插入数据库的日期。 发布/存储在数据库中的日期格式如下
2014-03-26 15:36:37
我想分成的区域是今天和过去七天 我用这样的基本if语句执行此操作:
if (postedDate == dateNow){
alert("Today");
}
if (postedDate > dateLastWeek && postedDate < dateNow){
alert("Last seven days");
}
虽然我的日期代码如下所示:
var dateDate = new Date();
var dateNow = dateDate.setDate(dateDate.getDate());
var dateLastWeek = dateDate.setDate(dateDate.getDate() - 7);
$.each(data, function (index, value) {
var postedDate = Date.parse(value.postDate);
if (postedDate == dateNow){}
if (postedDate > dateLastWeek && postedDate < dateNow){}
})
然而,日期变为这样的长字符串:
订单现在是,上周还是发布日期。
这些并不适用于if语句。
我应该如何获取日期并格式化以便正确比较它们? 我大多只关心将它们分成今天和上周,因此小时/分钟/秒并不重要。
谢谢。
答案 0 :(得分:1)
如果您不介意使用momentjs和日期范围插件:
// momentjs -- http://momentjs.com
// moment-range -- http://gf3.github.io/moment-range/
var data = /* database? */
// setup a date range then check if the date(s) fall within
var dateToday = moment().endOf('day'),
dateLastWeek = moment().startOf('day').subtract('days', 7),
dateRange = moment().range(dateLastWeek, dateToday),
dataFiltered = [];
// iterate over the entries and store those within the range
for (var i = 0; i < data.length; i++){
var d = moment(data[i].postDate);
if (d.isValid()){ // confirm it's a good date
if (dateRange.contains(d)){ // check if it's in range
dataFiltered.push(data[i]); // add it
}
}
}
// sort the entries
dataFiltered.sort(function(a,b){
var ad = moment(a.postDate).valueOf(),
bd = moment(b.postDate).valueOf();
return ad - bd;
});