无法使用javascript

时间:2018-01-02 09:26:02

标签: javascript date

我正面临一个问题。我无法使用javascript区分日期差异。我在下面解释我的代码。

var startdate_val = document.getElementById("stdate").value;
var enddate_val = document.getElementById("enddate").value;
var one_day=1000*60*60*24; 
var x=startdate_val.split("-");     
var y=enddate_val.split("-");
var date1=new Date(x[2],(x[1]-1),x[0]);
var date2=new Date(y[2],(y[1]-1),y[0])
var month1=x[1]-1;
var month2=y[1]-1;
var date_diff = Math.ceil((date2.getTime()-date1.getTime())/(one_day));
console.log('date',date_diff <= 0);

我需要enddate始终大于开始日期。这里我附上了我的日期时间代码。

<div class="row">
<div class="col-lg-6 col-md-6 col-sm-6">
<div class="pad-bot-10">
<label for="raised">Start Date</label>
<input id="stdate" type="text" class="form-control datetime" value="" placeholder="17-06-2017"/>
    </div>
</div>
<div class="col-lg-6 col-md-6 col-sm-6">
<div class="pad-bot-10">
<label for="raised">End Date</label>
<input id="enddate" type="text" class="form-control datetime" value="" placeholder="17-06-2017"/>
      </div>
  </div>
</div>  

这里我得到的日期字段值就像这个i.e-03-01-2018 02:46一样。我需要始终end date time应该大于start date time,但在我的情况下,在控制台消息中,我总是得到错误的结果。

3 个答案:

答案 0 :(得分:0)

Try this:
<div class="row">
<div class="col-lg-6 col-md-6 col-sm-6">
<div class="pad-bot-10">
<label for="raised">Start Date</label>
<input id="stdate" type="text" class="form-control datetime" value="17-06-2017" placeholder="17-06-2017"/>
    </div>
</div>
<div class="col-lg-6 col-md-6 col-sm-6">
<div class="pad-bot-10">
<label for="raised">End Date</label>
<input id="enddate" type="text" class="form-control datetime" value="17-07-2017" placeholder="17-06-2017"/>
      </div>
  </div>
</div>  

var startdate_val = document.getElementById("stdate").value;
var enddate_val = document.getElementById("enddate").value;
var one_day=1000*60*60*24; 
var x=startdate_val.split("-");     
var y=enddate_val.split("-");
var date1=new Date(x[2],(x[1]-1),x[0]);
var date2=new Date(y[2],(y[1]-1),y[0])
var month1=x[1]-1;
var month2=y[1]-1;
var date_diff = Math.ceil((date2.getTime()-date1.getTime())/(one_day));
console.log(date_diff >= 0);

您只需更改一行:console.log(&#39; date&#39;,date_diff&lt; = 0);

答案 1 :(得分:-1)

简单地这样做:

var startdate_val = document.getElementById("stdate").value;
var enddate_val = document.getElementById("enddate").value;
var stdate = new Date(startdate_val).toISOString();
var enddate = new Date(enddate_val).toISOString();
//Then
Console.log(enddate >= stdate);

我尝试的示例代码:

var startdate_val = '01-03-2018 02:45';
var enddate_val = '01-03-2018 02:45';
var stdate = new Date(startdate_val);
var enddate = new Date(enddate_val);
//Then
alert(enddate >= stdate);

返回True

Fiddle

将字符串转换为Date Object将优于手工劳动。

答案 2 :(得分:-1)

在您的HTML代码中,没有任何价值,因此您无法将其与网页加载时间进行比较,因为它是空白的。 不知怎的,如果您正在使用任何点击功能 请在下面更新您的代码。

    var startdate_val = document.getElementById("stdate").value;
        var enddate_val = document.getElementById("enddate").value;
        var one_day = 1000 * 60 * 60 * 24;
        var x = startdate_val.split("-");
        var y = enddate_val.split("-");
        var date1 = new Date(x[2], (x[1] - 1), x[0]);
        var date2 = new Date(y[2], (y[1] - 1), y[0])
        var month1 = x[1] - 1;
        var month2 = y[1] - 1;
        var date_diff = Math.ceil((date2.getTime() - date1.getTime()) / (one_day));
        if (date_diff <= 0)
            console.log(false);
        else
            console.log(true);

AND FOR FOR PAGE LOAD

  <div class="row">
        <div class="col-lg-6 col-md-6 col-sm-6">
            <div class="pad-bot-10">
                <label for="raised">Start Date</label>
                <input id="stdate" type="text" class="form-control datetime" value="17-06-2017" placeholder="17-06-2017" />
            </div>
        </div>
        <div class="col-lg-6 col-md-6 col-sm-6">
            <div class="pad-bot-10">
                <label for="raised">End Date</label>
                <input id="enddate" type="text" class="form-control datetime" value="18-06-2017" placeholder="17-06-2017" />
            </div>
        </div>
    </div>