【问题标题】:compare two date using javascript使用javascript比较两个日期
【发布时间】:2014-05-03 10:38:38
【问题描述】:

我有两个日期,一个是dd-mm-yyyy hh:mm 格式,另一个是dd-mm-yyyy (D1) 格式 首先,我将dd-mm-yyyy hh:mm 格式日期拆分为仅获得dd-mm-yyyy (D2) 格式 然后我比较日期 D2 和 D1 之类的

var D1 = new Date(); 
var D2 = new Date(); 
// D1 = 03-05-2014  this date take as an example
// D2 = 28-04-2014 00:00  this date take as an example
// D1 and D2 are taken by input fields.
    split the D2 date

dat = D2.split(' ');
D2 = dat[0];
//finally D2 is 28-04-2014
if(D2<=D1)
{
  echo "ok";
}
else{
  echo "something is wrong";
}

我总是得到 else 部分,这是因为我将日期从 28-04-2014 00:00 拆分为 28-04-2014 吗?

【问题讨论】:

  • 你需要什么样的结果作为输出?
  • if 条件的真部分
  • 实际上它只比较一天我不知道为什么,它不比较整个日期
  • 没有得到答复..

标签: javascript date


【解决方案1】:
dateFirst = D1.split('-');
dateSecond = D2.split('-');
var value = new Date(dateFirst[2], dateFirst[1], dateFirst[0]); //Year, Month, Date
var current = new Date(dateSecond[2], dateSecond[1], dateSecond[0]);

比使用 if 条件

if(D2<=D1)
{
console.log('ok');
}
else
{
console.log('something is wrong');
}

【讨论】:

    【解决方案2】:

    这才是你真正需要的

    var D1 = "03-05-2014";
    var D2 = "28-04-2014 00:00";
    
    if ((new Date(D1).getTime()) >= (new Date(D2).getTime())) {
        alert('correct');
    } else {
        alert('wrong');
    }
    

    WORKING DEMO

    【讨论】:

    • 由此我无需将日期从 28-04-2014 00:00 拆分为 28-04-2014 吗?
    • yes.将任何日期字符串解析为对象并比较时间
    • 你不需要 getTime 因为 valueOf 一个 Date 是如何定义的
    【解决方案3】:

    这是一个字符串比较,不是日期比较

    就字符串而言... 2 大于 0... 这就是为什么您总是点击“有问题”声明的原因

    编辑:这是对出错原因的解释 // 创建一个日期变量 var D1 = new Date();

    // Creates another date variable
    var D2 = new Date();
    
    // Converts this date variable into a string
    D1 = 03-05-2014 
    
    // This is too is converted into a string
    D2 = 28-04-2014 00:00
    
        dat = D2.split(' ');
    D2 = dat[0];
    
    //finally D2 is 28-04-2014  <-- true, but it is a string
    if(D2<=D1){    //   <-- At this point you are doing a string comparison
    
            echo "ok";
    
    } else {
    
        echo "something is wrong";
    
    }
    

    编辑:这是一个可能的解决方案。 . .

    不是那样,而是这样做

    var D1 = new Date();
    var D2 = new Date();
    
    if(D2.getTime() <= D1.getTime()){
        echo "ok";
    } else {
        echo "something is wrong";
    }
    

    编辑:如果您是从输入字段中获取它,请执行此操作

    // Make sure you dates are in the format YYYY-MM-DD.
        // In other words, 28-04-2014 00:00 becomes 2014-04-28 00:00
    // Javascript Date only accepts the ISO format by default
    var D1 = new Date( $('#input1#').val() );
    var D2 = new Date( $('#input2#').val() );
    
        if(D2.getTime() <= D1.getTime()){
        echo "ok";
    } else {
        echo "something is wrong";
    }
    

    【讨论】:

    • 这必须是评论
    • 我采用可变日期类型
    • Tarzan,一开始你确实把它定为一个日期......但后来你用D1 = 03-05-2014把它改成了一个字符串。查看我的答案以获得解释和解决方案。
    • 不不,我是从输入字段中获取日期,这里我只是举个例子
    【解决方案4】:

    试试:

    var msg = new Date("03-05-2014").getTime() >= new Date("28-04-2014 00:00").getTime() ? 'Correct' : 'Wrong';
    alert(msg);
    

    【讨论】:

      【解决方案5】:
      var now = new Date();
      var end = new Date(//some other date hear);
      if(now>end)
      {
           console.log('now=',now);
      }
      else
      {
          console.log('end=',end);
      }
      

      【讨论】:

        【解决方案6】:

        您可以使用最简单易懂的方式进行日期比较。

        <input type="date" id="getdate1" />   //with time include
        <input type="date" id="getdate2" /> // without time include
        

        所以先写一个常用的方法来解析日期方法。

            <script type="text/javascript">
                        function parseDate(input) {   
                          var parts = input.split(' ');
                      var datecomp=parts[0];  // will get 
                      var timecomp=parts[1];  // will get time
                          var dparts=datecomp.split('-');
                     if(timecomp!=undefined && timecomp!=null){ //if there is like
                                     var tparts=timecomp.split(':');
             return new Date(dparts[2], dparts[1]-1, dparts[0], tparts[0], tparts[1]); 
        
        
         }else{  // for when no time is givin
            return new Date(dparts[2], dparts[1]-1, dparts[0]); 
                                                      }
                                                     return "";
                                                      }
                    </script>
        

        在这里你可以调用上面的方法

        <script type="text/javascript">
        
                      $(document).ready(function(){
                      //parseDate(pass in this method date);
                            Var Date1=parseDate($("#getdate1").val());
                                Var Date2=parseDate($("#getdate2").val());
                       //use any oe < or > or = as per ur requirment 
                       if(Date1 = Date2){
                 return false;  //or your code {}
        }
         });
            </script>
        

        只需使用 parseDate 方法并比较任何类型的日期。

        【讨论】:

          【解决方案7】:

          将它们转换为毫秒,然后进行比较

          【讨论】:

          • 你会怎么做?
          • 这应该是一条评论。如果您愿意,您可以通过添加更详细的信息和/或示例将其变成完整答案。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-31
          • 1970-01-01
          • 1970-01-01
          • 2010-11-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多