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

使用JavaScript和PHP根据出生日期计算年、月时长,仅能获取天数的问题

计算出生日期对应的年数与月数解决方案

直接通过毫秒差换算年、月并不准确,因为不同月份天数不同,还有闰年的影响。正确的做法是直接操作Date对象的年、月、日属性来计算,以下是修改后的代码:

$("#nacimiento").change(function(){
    const nacimiento = $("#nacimiento").val();
    const fechaInicio = new Date(nacimiento);
    const fechaFin = new Date(); // 直接获取当前日期,替代PHP输出的方式

    // 获取年、月、日数值
    let anios = fechaFin.getFullYear() - fechaInicio.getFullYear();
    let meses = fechaFin.getMonth() - fechaInicio.getMonth();
    const diaFin = fechaFin.getDate();
    const diaInicio = fechaInicio.getDate();

    // 处理日期未到当月生日的情况
    if (diaFin < diaInicio) {
        meses--;
        // 如果月数为负数,从年数里借1年
        if (meses < 0) {
            anios--;
            meses += 12;
        }
    }

    // 输出结果,可按需调整显示格式
    const resultado = `已过去 ${anios} 年 ${meses} 个月`;
    console.log(resultado);
    document.getElementById('meses').innerHTML = resultado;
});

关键说明:

  • 放弃毫秒差计算方式,避免因月份天数、闰年导致的误差
  • 先计算年差和月差,再通过日期的日部分判断是否需要调整:如果当前日期的日小于出生日期的日,说明当月还没到生日,月数要减1,若月数变为负数则从年数中扣除1年并补12个月
  • 用new Date()直接获取当前日期,比PHP输出日期字符串更简洁可靠

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 23:06:27