You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Luxon的toRelative输出“3 months old”而非“3 months ago”?

关于Luxon的toRelative输出"X old"格式的解决方案

Luxon的toRelative方法本身没有直接配置项来替换默认的"ago"为"old",但可以通过两种方式实现需求:

1. 自定义本地化文案(库内方法)

Luxon支持修改本地化的相对时间表述,你可以覆盖英文本地化中“过去时间”的模板,把%s ago替换成%s old:

import { Settings, DateTime } from 'luxon';

// 更新英文本地化的相对时间规则
Settings.updateLocale('en', {
  relative: {
    past: '%s old', // 替换原有的"%s ago"
    future: '%s from now' // 保留未来时间的表述,按需调整
  }
});

// 测试示例
const pastDate = DateTime.now().minus({ months: 3 });
console.log(pastDate.toRelative()); // 输出 "3 months old"

这种方式适合全局需要统一使用"old"格式的场景,修改后所有toRelative调用都会自动应用新模板。

2. 手动构建字符串(灵活场景)

如果只是个别场景需要这种格式,不想修改全局配置,可以直接计算时间差后拼接字符串:

import { DateTime } from 'luxon';

const pastDate = DateTime.now().minus({ months: 3 });
// 获取时间差的月份数(取绝对值避免负数)
const monthDiff = Math.abs(pastDate.diffNow(['months']).toObject().months);
// 处理单复数
const unit = monthDiff === 1 ? 'month' : 'months';
console.log(`${monthDiff} ${unit} old`); // 输出 "3 months old"

这种方式更灵活,还可以根据需要扩展到年、日等其他时间单位。

内容的提问来源于stack exchange,提问作者Michael Kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 14:43:13