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

如何在jQuery中通过两个日期计算出正确年龄?

解决日期字符串直接相减计算年龄的问题

嘿,我懂你现在的困扰啦——直接把currentDate和date[0]这两个日期字符串相减肯定得不到正确的年龄,因为它们本质是文本格式,JavaScript没办法直接识别并计算日期差值,这样操作只会得到NaN或者毫无意义的数值。

问题根源

你写的currentDate和date[0]都是类似"2018-06-30"的字符串,当你尝试用currentDate - date[0]时,JS会尝试把它们转为数字,但这种格式的字符串转数字会失败,结果就是NaN,自然算不出正确年龄。

正确的计算方法

我们需要把日期字符串转为Date对象,然后通过对比年份、月份和日期来精准计算年龄:

  • 先把出生日期字符串转为Date实例
  • 获取当前日期的年、月、日信息
  • 计算初始年龄(当前年份 - 出生年份)
  • 调整年龄:如果当前月份小于出生月份,或者月份相同但当前日期小于出生日期,说明还没到今年的生日,年龄要减1

修改后的代码

var date_time = elem.added_date;
var dateParts = date_time.split(' ');
var birthDateStr = dateParts[0]; // 比如"1988-01-30"

// 把出生日期字符串转为Date对象
var birthDate = new Date(birthDateStr);
var currentDate = new Date();

// 获取各部分日期信息
var currentYear = currentDate.getFullYear();
var currentMonth = currentDate.getMonth(); // 月份是0-11,注意!
var currentDay = currentDate.getDate();

var birthYear = birthDate.getFullYear();
var birthMonth = birthDate.getMonth();
var birthDay = birthDate.getDate();

// 计算初始年龄
var age = currentYear - birthYear;

// 调整年龄:如果还没到今年生日,减1
if (currentMonth < birthMonth || (currentMonth === birthMonth && currentDay < birthDay)) {
    age--;
}

// 现在age就是正确的年龄啦
console.log(age);

注意点

  • Date.getMonth()返回的是0到11的数值(0代表1月,11代表12月),所以不用像你之前那样加1,直接对比就行
  • 一定要确保birthDateStr的格式是JS的Date对象能识别的(YYYY-MM-DD是标准格式,没问题)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:09:55