Javascript:getDate()加上一个if语句

时间:2014-07-09 12:17:01

标签: javascript if-statement

我正在尝试在javascript上构建if语句;

if (nextProcessingDate > today ) {
  //do something
}

nextProcessingDate 分配了一个时间戳,即09/07/2014 12:10:17

我使用以下代码将今天的时间戳分配给今天变量

/*script start*/

    var today = new Date();
    var dd = today.getDate();
    var mm = today.getMonth() + 1; //January is 0!
    var yyyy = today.getFullYear();

    var s = today.getSeconds();
    var m = today.getMinutes();
    var h = today.getHours();

    if (dd < 10) {
        dd = '0' + dd
    }

    if (mm < 10) {
        mm = '0' + mm
    }
    if (s < 10) {
        s = '0' + s
    }
    if (m < 10) {
        m = '0' + m
    }
    if (h < 10) {
        h = '0' + h
    }

    today = dd + '/' + mm + '/' + yyyy + ' ' + h + ':' + m + ':' + s;

/*script end*/

现在我真正想要做的是&#34;如果nextprocessingDate比今天更大,再加上一天,那就做点什么&#34;

 if (nextProcessingDate > (today + 1){
   //do something
}

感谢您的帮助,这里是小提琴链接http://jsfiddle.net/E5vG4/1/

更新 所以,这里是更新的小提琴,似乎在某种程度上起作用。 http://jsfiddle.net/E5vG4/9/

现在的问题是它只返回true,处理日期时间戳等于或超过24小时,我需要在上午09:30进行测试,在这种情况下,它会返回false。

从下一个处理日期剥离时间会以某种方式修复它吗?

4 个答案:

答案 0 :(得分:1)

你绝对不应该使用字符串来比较日期。

您可以尝试从nextProcessingDate创建Date对象:

var nextProcessingDate  = '09/07/2014 12:10:17';
var d = Date.parse(nextProcessingDate);
if (d > (new Date().getTime() + (1000 * 60 * 60 * 24))) {
       alert("after");
} else {
       alert("before");
}

答案 1 :(得分:1)

日期处理是一个痛苦的JavaScript,一旦你考虑到跨越午夜,夏令时变化和闰日的时间段,编写自己的解决方案是各种棘手的。

我建议选择一个既定的日期处理库来做这种事情。

我一直在使用moment.js并且发现它非常棒。

您的代码将变为:

if(moment(nextProcessingDate).isAfter(moment(today).add('days',1))) {
  // do something
}

或者,更简洁:

if(moment('09/07/2014 14:05:17').isAfter(moment().add('days',1))) {
  // do something
}

答案 2 :(得分:1)

today.setDate(today.getDate() + 1);

之前var dd = today.getDate();可以使您的日期出现在今天的后一天。

Updated Fiddle

答案 3 :(得分:1)

 if (nextProcessingDate > (today + 1){
   //do something
}

只需在秒后添加1。

如果你只是想检查一个令人兴奋的时间戳是否比今天的日期+ 1天更大,你应该像你对月份所做的那样。因此,如果我09年的那天,dd将变为10个。

所以,如果我理解你的问题,请试试这个:

var dd = today.getDate() + 1;