Javascript 日期fns-从日期开始倒数,包括周

Javascript 日期fns-从日期开始倒数,包括周,javascript,date,date-fns,Javascript,Date,Date Fns,我正在建立一个倒计时时钟,我正在使用日期fns。我需要能够倒数从一个日期,包括周数。文档看起来像formatDuration返回了周数,但似乎没有,我想知道是否需要使用其他东西 我知道它们提供了不同的周函数,但不确定这对我的情况有多合适 提前谢谢 从'date fns'导入{intervalToDuration,formatDuration}; 常量单位=[‘年’、‘月’、‘周’、‘天’、‘小时’、‘分’、‘秒’]; let duration=间隔时间({ 开始日期:新日期(2022、6、2、

我正在建立一个倒计时时钟,我正在使用日期fns。我需要能够倒数从一个日期,包括周数。文档看起来像formatDuration返回了周数,但似乎没有,我想知道是否需要使用其他东西

我知道它们提供了不同的周函数,但不确定这对我的情况有多合适

提前谢谢

从'date fns'导入{intervalToDuration,formatDuration};
常量单位=[‘年’、‘月’、‘周’、‘天’、‘小时’、‘分’、‘秒’];
let duration=间隔时间({
开始日期:新日期(2022、6、2、0、0、15),
结束:新日期(),
});
格式持续时间(持续时间{
格式:单位:,
分隔符:',',
});

//返回年、月、日、小时、分钟和秒,但不返回周
创建持续时间时,日期fns默认不添加周,如果它们不在持续时间内,格式化程序将不显示它们

您可以使用基于天数值的函数手动添加周,例如

在使用duration.days之前,您可能需要测试它是否存在。然后做一些类似的事情:

let duration = intervalToDuration({
  start: new Date(2022, 6, 2, 0, 0, 15),
  end: new Date()
});

// Add weeks if missing
addWeeks(duration);

let formattedDuration = formatDuration(duration, {
  format: units,
  delimiter: ', '
});

// "1 year, 9 months, 1 week, 1 day, 10 hours, 39 minutes, 27 seconds"
console.log(formattedDuration);

周似乎只有在明确包含在持续时间中时才受支持,例如
formatDuration({年:2,月:9,周:3})
(请参阅)。您可以在运行代码时进行播放。
let duration = intervalToDuration({
  start: new Date(2022, 6, 2, 0, 0, 15),
  end: new Date()
});

// Add weeks if missing
addWeeks(duration);

let formattedDuration = formatDuration(duration, {
  format: units,
  delimiter: ', '
});

// "1 year, 9 months, 1 week, 1 day, 10 hours, 39 minutes, 27 seconds"
console.log(formattedDuration);