【发布时间】:2020-02-19 10:17:32
【问题描述】:
我有两个约会。并且需要以这种格式找到它们之间的持续时间${y}year ${w}weeks ${d}d
为此,我创建了函数。这是代码
setTotalDuration(): void {
const formattedFrom = moment(this.startDate).format('YYYY-MM-DD HH:mm:ss');
const formattedTo = moment(this.endDate).format('YYYY-MM-DD HH:mm:ss');
const duration = moment.duration(moment(formattedTo).diff(moment(formattedFrom)));
const y = Math.floor(duration.asYears());
const w = Math.floor(duration.asWeeks() - y * moment().weeksInYear());
const d = Math.floor(duration.asDays() - w * 7);
this.totalDuration = ` ${y}year ${w}weeks ${d}d`;
}
它工作不正常,现在如果我通过例如 startDate - 19/02/2020 和 endDate - 19/02/2021,我得到持续时间 - 1 年 -1 周 373 天。但我需要获得 1year 0weeks 0d
我的问题在哪里?
【问题讨论】:
-
我认为您不需要持续时间,只需使用粒度为
day的diff函数就足够了:const dayDifference = moment(this.endDate).diff(moment(this.startDate), 'day'); -
您也在执行冗余格式。您不需要它们来计算持续时间。
-
我设置了一个小的 jsfiddle 来演示如何使用 diff 来达到预期的结果:jsfiddle.net/rmekv2s0
-
366 天 -> 51.8 周,而不是 2020 年的 53 周
-
好的,例如,如果天数是 8,它会返回 1 周 1 天吗? @nbokmans
标签: javascript typescript momentjs