Date-fns 格式的距离不是用正确的词
Posted
技术标签:
【中文标题】Date-fns 格式的距离不是用正确的词【英文标题】:Date-fns format distance is not in correct words 【发布时间】:2021-12-12 10:23:05 【问题描述】:我遇到了 UI 问题,希望将时间戳距离显示为 3 hours ago
和 4 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 谢谢它现在工作。您可以根据您的评论创建答案。所以我接受。
【参考方案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));
【讨论】:
以上是关于Date-fns 格式的距离不是用正确的词的主要内容,如果未能解决你的问题,请参考以下文章