JS计算宝宝的年龄


碰到一个很有意思的笔试,趁着1024这个节日,分享给jym看看,节日快乐🤭🤭

😜题目

编写一个名为calculateChildAge的函数,该函数接收两个字符串参数:birthDateString(表示宝宝的出生日期,格式为"YYYY-MM-DD")和currentDateString(表示当前日期,格式同样为"YYYY-MM-DD")。函数需要计算宝宝的年龄,并返回一个对象,该对象包含两个属性:years(表示宝宝的年龄,以整数年为单位)和months(表示宝宝年龄中不足一年的部分,以整数月为单位)。

例如,如果birthDateString为"2014-04-05",currentDateString为"2017-08-09",则函数应返回{years: 3, months: 4},表示宝宝的年龄为3岁4个月。

😍思路

当我们计算日期的时候,就需要使用日期对象(new Date), 计算两个时间的时间差。

  1. 解析出生日期和当前日期字符串,将它们转换为日期对象。
  2. 计算两个日期之间的总月份差。
  3. 根据总月份差计算出完整的年数和剩余的月数。
  4. 返回一个包含yearsmonths属性的对象。

难点

计算两个年份差不难,主要是计算月份差,我们需要考虑的多:

  • 当前月份大于出生月份,这时候正常相减
  • 当月份小于出生月份,这时候计算的月份差是小于0的,所以我们就要对age进行–,month就要加12
  • 当月份差等于0,并且当期的日期小于出生的日期,也是跟上面一样的操作
/**
 * 计算宝宝的年龄(周岁)和月份差
 *
 * @param babyBirthday 宝宝的出生日期,格式为 'YYYY-MM-DD'
 * @param currentDate 当前日期,格式为 'YYYY-MM-DD'
 * @returns 返回包含宝宝年龄(周岁)和月份差的对象
 */
function calBabyAge(babyBirthday, currentDate) {
  const babyBirth = new Date(babyBirthday);
  const current = new Date(currentDate);

  let age = current.getFullYear() - babyBirth.getFullYear();
  let month = current.getMonth() - babyBirth.getMonth();

  // 如果月份差小于0,或者月份差为0
  // 但当前日期的日小于出生日期的日,则年龄减1,月份差加12
  if (month < 0 || (month === 0 && current.getDate() < babyBirth.getDate())) {
    age--;
    month += 12;
  }

  return { age, month };
}

// 测试示例数据
const babyBirthday = "2014-04-05";
const currentDate = "2017-08-09";
console.log(calBabyAge(babyBirthday, currentDate)); // 输出:{ age: 3, month: 4 }

😗总结

这个题目还算是比较简单的,需要考虑的月份差,如果是需要精确到日,那就需要更复杂的逻辑进行处理,jym靠你们了😘😘

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值