javascript - 获取两个日期之间的持续时间(Moment JS)

标签 javascript typescript momentjs

我有 2 个约会。并且需要以这种格式查找它们之间的持续时间 ${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,我得到持续时间 - 1year -1weeks 373d。但我需要 1 年 0 周 0 天

我的问题出在哪里?

最佳答案

我希望这是你想要的。 您可以获得年份差异并将其添加到初始日期;然后获取以周为单位的差异,并将其再次添加到初始日期。


var moment = require("moment");

var a = moment(["2021", "02", "20"]);
var b = moment(["2020", "02", "19"]);

var years = a.diff(b, "year");
b.add(years, "years");

var weeks = a.diff(b, "week");
b.add(weeks, "weeks");

var days = a.diff(b, "days");

console.log(years + " years " + weeks + " weeks " + days + " days");


沙盒:https://codesandbox.io/s/compassionate-bas-fg1c2

关于javascript - 获取两个日期之间的持续时间(Moment JS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60297982/

相关文章:

javascript - 在 Angular View 中使用 moment.js

javascript - window.innerWidth 的单位

javascript - Ajax同时请求多个

JavaScript 可选链动态属性

angularjs - tsconfig 模块选项 - 'System' 是指 SystemJS 吗?

javascript - 使用 Moment.js 格式化日期

javascript - 过滤 dxdatagrid 的查找列值

javascript - 从 Javascript 函数调用 jQuery 方法

typescript - 有人可以向我解释一下 'as never' 在这段代码中做了什么吗?

javascript - "getDate().toJSON()"失去一天