无法使用javascript区分日期

无法使用javascript区分日期,javascript,date,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

我面临一个问题。我无法使用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);
    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);
这里我得到的日期字段值如下
即e-03-01-2018 02:46
。我总是需要
结束日期时间
应该大于
开始日期时间
,但在控制台消息中,我总是得到错误的结果。

只需这样做:

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

将字符串转换为日期对象比手动操作要好。

尝试以下操作:
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);
开始日期 结束日期 var startdate_val=document.getElementById(“stdate”).value; var enddate_val=document.getElementById(“enddate”).value; var一天=1000*60*60*24; var x=起始日期与分割值(“-”); 变量y=截止日期和拆分值(“-”); var date1=新日期(x[2],(x[1]-1),x[0]); var date2=新日期(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())/(一天)); console.log(日期差异>=0);

您只需要更改行:console.log('date',date_diff),在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));
console.log('date',date_diff <= 0);
    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);
var startdate\u val=document.getElementById(“stdate”).value;
var enddate_val=document.getElementById(“enddate”).value;
var一天=1000*60*60*24;
var x=起始日期与分割值(“-”);
变量y=截止日期和拆分值(“-”);
var date1=新日期(x[2],(x[1]-1),x[0]);
var date2=新日期(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())/(一天));

如果(date_diff)基本上你想要的是enddate=>startdate,对吗?@ArijitMukherjee:是的。你在使用日期选择器吗?我在使用
。正如@ArijitMukherjee所说,你应该能够做一些类似的事情:
$(“#datetimepicker6”)。在(“dp.change”,函数(e){$('#datetimepicker7')。数据(“datetimepicker7”)。minDate(e.date)});$(“#datetimepicker7”).on(“dp.change”,函数(e){$(“#datetimepicker6”).data(“DateTimePicker”).maxDate(e.date);};
不建议使用内置解析器将其作为注释而不是回答。OP格式似乎是d/m/y,但是大多数内置解析器将在3月1日而不是1月3日解析“03-01-2018 02:45”。@RobG OP删除了我想我告诉OP使用格式解析的注释,以及UTCIf您认为这些注释很重要吗,y您应该在答案中包含它们。它应该是独立的,不依赖于其他地方的评论。在Safari中,
新日期('01-03-2018 02:45')
返回无效日期(与ECMA-262的任何其他结果一致),因此比较变成
NaN>=NaN