以日期fns格式DistanceToNow将粒度减少到天、月、年



im使用日期fns库计算到某个事件的时间距离。例如:

formatDistanceToNow(nextEventDate, { addSuffix: true });

这将产生良好的人类友好输出:"在大约1个月内"。一切都很好,但当距离小于一天时,同样的方法会产生诸如"1分钟内"、"3秒内"或"2小时内"之类的信息。

如何降低粒度,使时间框架小于一天,则结果为"今天"?我想把输出四舍五入到年、月、周、天,但我不想要秒、分钟、小时。

我在库中尝试了不同的方法(formatDistance、formatDistanceStrict(,并尝试从日期参数中删除小时、分钟和秒,但没有成功。

谢谢。

最简单的方法是手动检查距离是否小于24小时:

import {formatDistanceToNow} from "date-fns"
function formatDistanceDay(date: Date): string {
const oneDay = 1000 * 3600 * 24;
const distance = Date.now() - date.getTime();
if (distance < oneDay && distance > 0) {
return "today";
}
return formatDistanceToNow(date, {addSuffix: true})
}

游乐场

最新更新