JavaScript如何根据开始时间和持续天数计算剩余时长
活动剩余时长计算解决方案
你可以通过Date对象的时间戳计算,直接将开始时间和持续天数转换为符合要求的结束时间格式,适配你现有的timer函数。
核心工具函数
封装工具函数完成结束时间转换:
// 入参:publishDateTime为开始时间字符串,duration为持续天数 // 返回值:符合ISO格式的结束时间字符串,可直接传入timer函数使用 function getEndTime(publishDateTime, duration) { const start = new Date(publishDateTime); // 天数转换为毫秒,和开始时间戳相加得到结束时间戳 const endTimestamp = start.getTime() + duration * 24 * 60 * 60 * 1000; return new Date(endTimestamp).toISOString(); }
调用示例
直接配合你现有代码使用即可:
// 你的业务参数 const publishDateTime = "2021-08-23T16:45:53.378"; const duration = 3; // 计算得到结束时间,传入timer const endTime = getEndTime(publishDateTime, duration); timer(endTime);
补充说明
- 普通业务场景下上述逻辑完全可用,如果你需要适配夏令时、时区偏移、跨月跨年等特殊场景,可以将天数计算逻辑替换为
setDate方法,自动处理日期边界问题,修改后的工具函数如下:
function getEndTime(publishDateTime, duration) { const start = new Date(publishDateTime); // 自动处理跨月、夏令时等日期偏移问题 start.setDate(start.getDate() + duration); return start.toISOString(); }
内容的提问来源于stack exchange,提问作者Sreerag G
相关产品推荐
相关产品推荐

