1

我正在开发一个 Angular 8+ 项目(所以我使用的是 Typscript),我有一个包含一些数据的表格,我需要为每一行显示两个日期之间的时间差。在我使用 Dayjs 的项目中。

一开始我使用的是这个功能:

calculateDelay(alertDate: string, operationDate: string): string {
    if (alertDate && operationDate) {
      return dayjs(alertDate).from(operationDate, true);
    }
  }

它返回这样的数据(2 days- 2 years- one day....)

但是这个代码有一个问题,当有一个 1 (天或其他什么)时,它是用文本而不是数字写的,我只想要数字。(该函数应该返回一个字符串,但我想要这种格式1 year而不是one year)。

所以我尝试了这个

  calculateDelay(alertDate: string, operationDate: string): string {
    if (alertDate && operationDate) {
      const date: string = dayjs(alertDate).from(operationDate, true);
      const [value, unit]: string[] = date.split(" ");
      return isNaN(+value) ? "1 " + unit : value + " " + unit;
    }
  }

(isNaN 来自 loadash)

它运行良好,但有一个问题......第二个函数的输出是some seconds,所以我的新代码返回1 seconds语法错误(因为只有一秒钟)。

我知道有一个.format()用 day js 调用的方法,但我只是不知道如何正确使用它,因为格式并没有真正修复(我希望它可能相关的月、年、分钟的结果)。

有人可以帮我吗?

另外我想避免自定义解析和删除字符串末尾无用的 s (如果可能的话)。

提前致谢

4

1 回答 1

1

当我调查存储库时,您可以使用插件 UpdateLocale 并覆盖默认配置。有一个例子给你。 DayJs 语言环境覆盖

于 2021-09-07T17:05:15.673 回答