在JavaScript中比较两个日期但不按预期工作

时间:2014-09-14 12:57:39

标签: javascript

我正在比较两个日期,一个是当前日期,另一个是从输入日期类型中选择的。我想如果所选日期小于当前日期返回true,但它不返回true;

    function check_start_date(obj){


          var value= obj.value;
          var curr_date= new Date();
          var selected_date= new Date(value);
          curr_date= trim_time(curr_date);
          if(selected_date < curr_date){
               alert("less");
               return true;
           }
          else{
              return  false;
              }


    }

4 个答案:

答案 0 :(得分:2)

您的trim_time函数没有删除毫秒数,因此修剪后的值curr_date将略大于selected_date,除非当前时间恰好落在第二个上(毫秒为0)

答案 1 :(得分:1)

我改变了我的trim_time(obj)功能,它确实有效:)

 function trim_time(obj){
     var obj1= new Date(obj.getFullYear(),obj.getMonth(),obj.getDate(),0,0,0);
    return obj1;
    }

答案 2 :(得分:0)

我的解决方案是使用Number()功能。然后比较两个结果数字。

var curr_date = Number(new Date());

...

var selected_date = Number(new Date(value));

...

然后比较等。没有测试顺便说一句,只是一些想法。

MDN说明:Number() Function

答案 3 :(得分:0)

您需要将日期转换为数字(以进行简单比较)。我的解决方案是:

function check_start_date( obj ) {
  var value = new Date( obj.value ) * 1; //--- convert to number
  var curr_date = new Date();
  curr_date = new Date( curr_date.getFullYear(), curr_date.getMonth(), curr_date.getDate()) * 1; //--- remove time from the date
  if( value < curr_ date ) {
    alert( 'less' );
    return true;
  } else {
    return false;
  }
}