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

Javascript 获取当前日期,将字符串解析为日期并比较日期,javascript,jquery,date,datetime,Javascript,Jquery,Date,Datetime,我有一个javascript/jQuery,因为我从AJAX调用中获得了一个列表。 我循环浏览这个列表,并希望将项目划分为不同的区域,这些区域基于项目插入数据库的日期。 数据库中发布/存储的日期的格式如下 2014-03-26 15:36:37 我想分为今天和最后七天 我使用基本的if语句来实现这一点,如下所示: if (postedDate == dateNow){ alert("Today"); } if (postedDate > dateLastWeek &&

我有一个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(postedDate==dateNow){
警报(“今日”);
}
如果(postedDate>dateLastWeek&&postedDate
我的日期代码如下所示:

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){}
})
var dateDate=new Date();
var dateNow=dateDate.setDate(dateDate.getDate());
var dateLastWeek=dateDate.setDate(dateDate.getDate()-7);
$.each(数据、函数(索引、值){
var postedDate=Date.parse(value.postDate);
如果(postedDate==dateNow){}
如果(postedDate>dateLastWeek&&postedDate
但是,日期会变成这样的长字符串:

我们的订单是现在、上周和邮寄日期

这些至少不能与if语句一起使用

我应该如何得到我的日期和格式,以便正确地比较它们? 我最关心的是把它们分成今天和上周,所以小时/分/秒并不重要


谢谢。

如果您不介意使用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;
});
//momentjs--http://momentjs.com
//力矩范围--http://gf3.github.io/moment-range/
var data=/*数据库*/
//设置日期范围,然后检查日期是否在
var dateToday=moment().endOf('day'),
dateLastWeek=moment().startOf('day')。减去('days',7),
dateRange=moment().range(dateLastWeek,dateToday),
数据过滤=[];
//迭代条目并将其存储在范围内
对于(变量i=0;i

您听说过吗?将它们作为unix时间戳是一个不错的选择。通过这种方式,您可以将它们像数字一样进行比较,即i<2==true。将它们都作为unix时间戳进行比较。@这位科学家说,这不起作用。除非if语句是错误的,或者如果JS正在读取我的“var postedDate”和类似的字符串,而不是timestamp/date/int,否则这可能不是一个好方法。。。但既然你提到只关心今天和上周。。。这是一张在黑暗中拍摄的照片@PsychHalf是的,这可能会起作用,因为数据库日期字符串总是相同的,但是您确定我们创建的日期总是正确的吗?i、 当我们减去七天时,如果当前日期是一个月的第一天,它是否有效?是的,这很好。但是有一件事遗漏了,你如何检查邮寄日期是否是今天?您的if语句只检查了过去七天,而缺少今天的if语句。@HenrikP:您可以使用
d.endOf('day').isname(dateToday)
。(我很抱歉忘记了)