如何验证日期是从今天<javascript>

时间:2016-06-15 03:39:27

标签: javascript date

我有这个功能,它包括验证用户输入的日期。到目前为止,我只检查日期格式是否正确(dd / mm / yyyy)。

但是,我还想检查输入的日期是今天的日期,而不是之前或将来的日期。

我想到了var currentdate = new Date();之类的东西然后比较两者,但我还没有修改日期,也不想搞砸它。有什么想法我应该写它吗?。

function validate(){
var date = $("#dateentry").val();

if (/^(0[1-9]|1\d|2\d|3[01])\/(0[1-9]|1[0-2])\/(19|20)\d{2}$/.test(date)){
   $("#msg").html("The date format is correct");
 }else{
   $("#msg").html("The date format must be dd/mm/yyyy");
 }

}

3 个答案:

答案 0 :(得分:2)

我认为您唯一的选择是与今天的比较。

var todaysDate = new Date();
if(new Date(date).setHours(0,0,0,0) >= todaysDate.setHours(0,0,0,0));
{
    $("#msg").html("Date should not be prior or greater that current date");
}

答案 1 :(得分:2)

您应该始终手动解析日期字符串,特别是如果它们不是ECMA-262(ISO 8601扩展格式)中包含的格式。

以d / m / y格式解析和验证日期的功能如下。然后,您可以通过创建今天的日期来检查是否是今天,将时间设置为00:00:00并进行比较:

function parseDMY(s) {
  var b = (''||s).match(/\d+/g);
  var d = new Date(b[2]||0, (b[1]||0)-1, b[0]);
  return d && d.getMonth() == b[1]-1? d : new Date(NaN);
}

var today = new Date();
today.setHours(0,0,0,0);

console.log('Today is: ' + today);

// Returns true on 15 June 2016
var s = '15/06/2016';
console.log('Is today ' + s + '? ' + (parseDMY(s).getTime() == today.getTime())) 

这也消除了测试单独输入值的需要。

答案 2 :(得分:1)

如果您使用input type="date",则可以禁用之前的日期,从而避免任何验证

希望此代码段有用

HTML

<input type="date" name="dateTime" id="dateTime">

JS

var dateTime = document.getElementById("dateTime").value;
var today = new Date().toISOString().split('T')[0];
document.getElementById("dateTime").setAttribute('min', today);

DEMO