如何获取当前日期所在季度的当日累计天数?(已实现季度判断)
计算当前日期所在季度的累计天数
嘿,这个需求其实很好实现,核心思路就是用当前日期减去本季度第一天的日期,把时间差转换成天数后再加1(毕竟当天也算一天嘛)。咱们一步步来搞定它:
首先明确几个关键步骤:
- 拿到当前日期的年份和月份
- 算出当前季度的第一天是哪一天
- 计算两个日期的间隔天数,再加上当天的1天
直接上可复用的完整代码:
// 获取当前日期对象 const currentDate = new Date(); // 获取当前月份(注意JS里月份是0开始的,0=1月,11=12月) const currentMonth = currentDate.getMonth(); // 计算当前季度的起始月份:Q1是0(1月),Q2是3(4月),Q3是6(7月),Q4是9(10月) const quarterStartMonth = Math.floor(currentMonth / 3) * 3; // 构造季度第一天的日期:年份用当前年,起始月份,日期设为1 const quarterStartDate = new Date(currentDate.getFullYear(), quarterStartMonth, 1); // 计算两个日期的毫秒差,转换成天数 const dayDiff = Math.floor((currentDate - quarterStartDate) / (1000 * 60 * 60 * 24)); // 加1得到累计天数(因为dayDiff是从季度第一天到当前日期前一天的天数) const accumulatedDays = dayDiff + 1; console.log(accumulatedDays); // 比如2018年6月20日会输出81
验证一下你的例子
拿2018年6月20日来说,季度第一天是4月1日:
- 4月剩余30天(从4月1日到4月30日是30天?不对,其实4月1日到6月20日的间隔天数是30(4月)+31(5月)+19(6月1日到19日)=80天,加1之后就是81天,完全符合你的预期。
而且不用担心闰年或者不同月份天数的问题——JS的Date对象会自动处理这些细节,比如2020年2月有29天,代码也能正确计算。
内容的提问来源于stack exchange,提问作者Philip S
相关产品推荐
相关产品推荐

