You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从HTML5 Date字段提取日和月并进行比较?

解决HTML5 Date输入框提取月日并比较的问题

嘿,我来帮你搞定这个问题!首先得先说说你之前遇到NaN的原因:HTML5的date输入框的日期值是存在value属性里的,而不是innerHTML,所以你用innerHTML拿到的是空字符串,Date.parse()解析空字符串自然会返回NaN啦。

下面给你两种可靠的解决方法:

方法一:直接截取字符串(简单高效)

因为HTML5的date输入框返回的value是固定的YYYY-MM-DD格式,所以我们可以直接截取字符串的后5位来得到MM-DD:

<input autocomplete="off" type="date" class="form-control" id="date_cust" name="date_cust" required />
<script>
var date_input = document.getElementById('date_cust');
date_input.onchange = function(){
    // 截取从第5位开始的子串,得到MM-DD格式
    var extracted_data = date_input.value.slice(5);
    // 注意:JS变量名不能以数字开头,所以把31march改成march31
    var march31 = '03-31';
    if (extracted_data === march31) {
        alert("Happy Birthday");
    } else {
        alert("Not your birthday yet.");
    }
}
</script>

方法二:用Date对象处理(更灵活)

如果以后需要处理其他日期格式,或者要做更多日期相关的操作,用Date对象会更稳妥。需要注意的是,JS里的月份是从0开始计数的(0代表1月),所以要给月份加1,还要用padStart(2, '0')确保月份和日期都是两位数字:

<input autocomplete="off" type="date" class="form-control" id="date_cust" name="date_cust" required />
<script>
var date_input = document.getElementById('date_cust');
date_input.onchange = function(){
    // 用value创建Date对象
    var selectedDate = new Date(date_input.value);
    // 获取月份并转成两位数字(加1是因为JS月份从0开始)
    var month = String(selectedDate.getMonth() + 1).padStart(2, '0');
    // 获取日期并转成两位数字
    var day = String(selectedDate.getDate()).padStart(2, '0');
    var extracted_data = `${month}-${day}`;
    
    var march31 = '03-31';
    if (extracted_data === march31) {
        alert("Happy Birthday");
    } else {
        alert("Not your birthday yet.");
    }
}
</script>

另外还要提醒你:你原来写的var 31march = '03-31';是不合法的JS语法,变量名不能以数字开头,所以改成march31或者march_31这类符合规范的名字哦。

内容的提问来源于stack exchange,提问作者kank95

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 13:04:04