【问题标题】:date-fns - countdown from date including weeksdate-fns - 从日期开始倒计时,包括周数
【发布时间】:2021-01-08 18:08:51
【问题描述】:

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

我知道他们提供的 differenceInWeeks 函数,但不确定这对我来说有多合适。

提前致谢。

import { intervalToDuration, formatDuration } from 'date-fns';

const units = ['years', 'months', 'weeks', 'days', 'hours', 'minutes', 'seconds'];
  let duration = intervalToDuration({
    start: new Date(2022, 6, 2, 0, 0, 15),
    end: new Date(),
  });

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

// Returns years, months, days, hours, minutes and seconds but not weeks

【问题讨论】:

标签: javascript date date-fns


【解决方案1】:

创建持续时间时,默认情况下 date-fns 不会添加周数,如果它们不在持续时间中,格式化程序将不会显示它们。

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

function addWeeks(duration) {
  if (!duration.weeks) {
    duration.weeks = duration.days / 7 | 0;
    duration.days = duration.days - duration.weeks*7;
  }
}

您可能想在使用前测试 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 2022-01-20
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多