获取当前日期,解析日期字符串并比较日期

时间:2014-03-26 15:05:44

标签: javascript jquery date datetime

我有一个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){}
})

然而,日期变为这样的长字符串:enter image description here

订单现在是,上周还是发布日期。

这些并不适用于if语句。

我应该如何获取日期并格式化以便正确比较它们? 我大多只关心将它们分成今天和上周,因此小时/分钟/秒并不重要。

谢谢。

1 个答案:

答案 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;
});

example