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

问题描述 投票:0回答:2

我有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,我得到的持续时间-1年-1周373d。但我需要获得1年0周0d

我的问题在哪里?

javascript typescript momentjs
2个回答
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


0
投票

尝试此代码:

var now = moment(new Date()); //todays date
var end = moment("2020-02-16"); // another date
var duration = moment.duration(now.diff(end));
var days = duration.asDays();
© www.soinside.com 2019 - 2024. All rights reserved.