MomentJS如何按起始时间动态追加时长到当日结束或满24小时
MomentJS 动态计算时间区间结束时间解决方案
可以直接用MomentJS内置的startOf()和endOf()方法实现需求,无需手动计算叠加时长,还能避免时区和精度问题。由于你的时间格式是带Z的UTC标准时间,处理时必须使用UTC模式,否则会受本地时区影响出现时间偏移,完整实现代码如下:
// 入参为start字段的ISO时间字符串 function calcEndTime(startStr) { const startMoment = moment.utc(startStr); // 判断起始时间是否为当天零点 const isDayStart = startMoment.isSame(startMoment.clone().startOf('day')); let endMoment; if (isDayStart) { // 零点场景:两种规则按需选择 // 规则1:输出到当天23:59:59.999,和你给出的示例格式对齐 endMoment = startMoment.clone().endOf('day'); // 规则2:追加24小时到次日零点,符合24小时整的左闭右开区间逻辑 // endMoment = startMoment.clone().add(24, 'hour'); } else { // 非零点场景:直接对齐到当天结束 endMoment = startMoment.clone().endOf('day'); } // 若需要去掉毫秒和示例完全一致,可添加.milliseconds(0) return endMoment.milliseconds(0).toISOString(); }
验证效果
- 输入零点时间
2020-08-03T00:00:00Z,输出为2020-08-03T23:59:59Z,完整覆盖当天区间 - 输入非零点时间
2020-08-03T15:11:51Z,输出为2020-08-03T23:59:59Z,不会出现跨天问题
内容的提问来源于stack exchange,提问作者gurbajani
相关产品推荐
相关产品推荐

