【问题标题】:How can I get the correct birthdate format if the user inputs month, day and year separately?如果用户分别输入月、日和年,如何获得正确的生日格式?
【发布时间】:2021-07-17 16:23:09
【问题描述】:

我有一个包含三个数字类型输入的表单:月 (MM)、日 (DD) 和年 (YYYY)。一旦用户输入他们的生日,我希望能够获取这些值并验证他们是否超过 19 岁。

input,
select {
  display: block;
  text-align: center;
}
<form id="verification-form">
        <label for="month"></label>
    <input type="number" id="month" name="month" maxlength="2" placeholder="MM">
    <label for="day"></label>
    <input type="number" id="day" name="day" maxlength="2" placeholder="DD">
    <label for="year"></label>
    <input type="number" id="year" name="year" maxlength="4" placeholder="YYYY">
    <button type="submit" id="verify">VERIFY</button>
</form>

我知道如何将出生日期解析为正确的日期格式后进行比较。我如何在纯 JavaScript 中做到这一点?非常感谢您的帮助!

【问题讨论】:

标签: javascript date validation


【解决方案1】:

你可以通过 javascript 获取生日

 var month = document.getElementById("month").value;
 var day = document.getElementById("day").value;
 var year = document.getElementById("year").value;

 var birthdate = new Date(year, month - 1, day);

现在,如果您想查找年龄并将其与 19 岁进行比较,请单击此处验证代码。

 document.getElementById("verify").onclick = function () {
        var month = document.getElementById("month").value;
        var day = document.getElementById("day").value;
        var year = document.getElementById("year").value;

        var birthdate = new Date(year, month - 1, day);

        var today = new Date();
        var age = today.getFullYear() - birthdate.getFullYear();
        var m = today.getMonth() - birthdate.getMonth();
        if (m < 0 || (m === 0 && today.getDate() < birthdate.getDate())) {
            age--;
        }
        
        if(age > 19){
            // Older than 19
        }
    }

【讨论】:

  • 您可以通过以下方式简化计算:if (new Date(+year + 19, month - 1, day) &lt; Date.now()) 那么日期是 19 多年前。 :-)
  • 啊,非常感谢!真的很感激!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-24
  • 1970-01-01
相关资源
最近更新 更多