当前位置: 首页 > article >正文

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靠你们了😘😘


http://www.kler.cn/news/363419.html

相关文章:

  • window7虚拟机VMware与主机共享文件
  • 基于django的个人相册日记管理系统
  • VuePress的基本常识
  • Apache Cordova学习计划
  • 【AI创新】优化ChatGPT提示词Prompt设计:释放AI的无限潜能
  • Python 代码实现对《红楼梦》文本的词频统计和数据可视化
  • [分享] SQL在线编辑工具(好用)
  • WebGL编程指南 - 入门续
  • 喜讯!望繁信科技荣膺2022年中国超自动化先锋企业TOP20
  • RHCSA学习_1使用rhel9练习Linux基础命令
  • 安全见闻(9)——开阔眼界,不做井底之蛙
  • VASCO:增减材混合制造的体积和表面共分解
  • python -【流式接口返回响应处理】
  • 分布式数据库的搭建
  • PDF文件为什么不能编辑是?是啥原因导致的,有何解决方法
  • Android音视频 MediaCodec框架-启动编码(4)
  • React1-基础概念
  • 探秘磁盘的奥秘:物理结构、缓存和虚拟内存的作用
  • 【Java数据结构】---Map和Set(二叉搜索树)
  • 力扣382:链表随机结点
  • 计算广告第三版pdf
  • V2X介绍
  • 未来医疗:大语言模型如何改变临床实践、研究和教育|文献精析·24-10-23
  • Java毕业设计项目-ssm图书管理系统
  • 每日回顾:简单用C写 直接插入排序、希尔排序
  • 面试经典算法题63-只出现一次的数字