【问题标题】:Date-fns format distance is not in correct wordsDate-fns 格式的距离不是用正确的词
【发布时间】:2021-12-12 10:23:05
【问题描述】:

我遇到了 UI 问题,希望将时间戳距离显示为 3 hours ago4 hours ago 等。来自服务器的时间戳具有名为 createdAt 的属性,该属性具有以下值。

createdAt: "2021-10-27T05:24:37.642Z"

为了解决这个问题,我使用了像 date-fns v2.25.0 内置函数 formatDistance 这样的库。

import { formatDistance} from 'date-fns';

const timestamp = createdAt ? new Date(createdAt) : '';
console.log(formatDistance(Date.now(), timestamp, {addSuffix: true}));
    

但用下面的话却是在回馈距离

in about 3 hours
in about 4 hours

而不是

3 hours ago
4 hours ago

我做错了什么?如果您知道任何其他好的图书馆,请您分享。

【问题讨论】:

  • 反转formatDistance中的两个参数
  • 如果使用moment包moment('2021-10-27T05:24:37.642Z').fromNow();
  • @Evert 谢谢它现在工作。您可以根据您的评论创建答案。所以我接受。

标签: javascript date-fns


【解决方案1】:

您可以使用任何其他流行的包,例如moment,我相信它有更多的自定义配置,但是如果您想使用这个包,而不必更改formatDistance 函数,它会更容易更改结果字符串,如:

import { formatDistance } from "date-fns";

const createdAt = "2020-08-27T08:24:37.642Z";
const timestamp = createdAt ? new Date(createdAt) : "";
const distance = formatDistance(Date.now(), timestamp, {addSuffix: true });

console.log(distance.substring(distance.indexOf(distance.match(/\d+/g))));

// => 2 hours ago

【讨论】:

  • 不要建议新代码的时刻。它正在逐步淘汰。 OP 的问题只是参数被颠倒了。
【解决方案2】:

颠倒参数:

console.log(formatDistance(timestamp, Date.now(), {addSuffix: true}));

【讨论】:

    猜你喜欢
    • 2019-01-03
    • 2019-03-18
    • 2021-06-22
    • 2022-11-15
    • 2021-01-23
    • 2021-01-07
    • 2021-11-14
    • 2021-11-27
    • 1970-01-01
    相关资源
    最近更新 更多