Javascript 日期选择器不允许今天';接受日期

Javascript 日期选择器不允许今天';接受日期,javascript,function,date,if-statement,Javascript,Function,Date,If Statement,此代码只允许将来发生事件 我遇到的问题是,它不允许提交今天的日期,但我需要它被允许。我怎样才能做到这一点 这是我的密码: if ( this.element.find( '#visitdate' ).length > 0 ) { var dateParts = $( '#visitdate' ).val().split( '/' ); var check = new Date( dateParts[2], dateParts[1]-1, dateParts[0], 0, 0, 0,

此代码只允许将来发生事件

我遇到的问题是,它不允许提交今天的日期,但我需要它被允许。我怎样才能做到这一点

这是我的密码:

if ( this.element.find( '#visitdate' ).length > 0 ) {
  var dateParts = $( '#visitdate' ).val().split( '/' );
  var check = new Date( dateParts[2], dateParts[1]-1, dateParts[0], 0, 0, 0, 0 ).getTime();
  var today = Date.now();
  if ( today > check ) {
    _errMsg = "Please enter a future visit date";
    return false;
  } else {
    return true;
  }
}

你所需要做的就是用天数来决定日期,而不是精确的时间。更改此选项后,您的代码将如下所示:

if ( this.element.find( '#visitdate' ).length > 0 ) {
  var dateParts = $( '#visitdate' ).val().split( '/' );
  var check = new Date( dateParts[2], dateParts[1]-1, dateParts[0] ).getTime();
  var today = new Date( Date.now().getFullYear(), Date.now().getMonth(), Date.now().getDate() ).getTime();
  if ( today > check ) {
    _errMsg = "Please enter a future visit date";
    return false;
  } else {
    return true;
  }
}
var d = new Date();
var today = new Date(d.getFullYear(), d.getMonth(), d.getDate());

我在示例代码中看到的一个问题是,您正在使用Date.now(),其中包括小时、分钟、秒等

你最好这样做:

if ( this.element.find( '#visitdate' ).length > 0 ) {
  var dateParts = $( '#visitdate' ).val().split( '/' );
  var check = new Date( dateParts[2], dateParts[1]-1, dateParts[0] ).getTime();
  var today = new Date( Date.now().getFullYear(), Date.now().getMonth(), Date.now().getDate() ).getTime();
  if ( today > check ) {
    _errMsg = "Please enter a future visit date";
    return false;
  } else {
    return true;
  }
}
var d = new Date();
var today = new Date(d.getFullYear(), d.getMonth(), d.getDate());
然后您可以检查时间差:

if (today.getTime() > check ) {

}
更新:示例代码

if (this.element.find('#visitdate').length > 0) {
  var dateParts = $('#visitdate').val().split('/');
  var check = new Date(dateParts[2], dateParts[1]-1, dateParts[0], 0,0,0,0);
  var d = new Date();
  var today = new Date(d.getFullYear(), d.getMonth(), d.getDate());
  if (today.getTime() > check.getTime() ) {
    _errMsg = "Please enter a future visit date";
    return false;
  } else {
    return true;
  }
}

@JPS您能解释一下这将如何影响此解决方案的有效性吗?如果我错了,请原谅,但是getTime是一个从1970年1月的日期到所选日期的以微秒为单位的时间。这意味着每一秒这个数字都会改变,所以它永远不会相等。这有意义吗@APerson@JPS我可以合理地确定,
getTime()
返回一个数字,可以与您从中获得的数字进行比较。是的,但它总是不同的,那么您如何比较每秒可能不同的数字呢@你能在我的代码样本中给我举个例子让我理解吗@edrian@JPS我在你的示例代码中加入了一个示例,呃,“今天”的午夜永远不会是未来的事件…