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

如何自定义Day.js RelativeTime插件的相对时间输出格式?

如何自定义Day.js RelativeTime插件的相对时间输出格式?

刚好我之前也研究过Day.js这个RelativeTime插件的自定义配置,完全不用你说的那种拼接字符串的麻烦方法,直接通过本地化配置就能搞定,给你详细说下:

其实RelativeTime插件的所有输出文案,都是存在Day.js的本地化(locale)配置里的,我们只需要修改对应locale的relativeTime对象,就能定制自己想要的格式。

直接修改默认英文locale的配置

如果你用的是默认的英文环境,直接像下面这样配置就行:

import dayjs from 'dayjs'
import relativeTime from 'dayjs/plugin/relativeTime'

// 先加载RelativeTime插件
dayjs.extend(relativeTime)

// 自定义相对时间格式
dayjs.locale('en', {
  relativeTime: {
    future: '%s from now',  // 未来时间的格式,%s会被替换成具体的时间数值+单位
    past: '%s ago',         // 过去时间的格式
    s: 'a few seconds',
    m: 'a minute',
    mm: '%d minutes',
    h: 'an hour',
    hh: '%d hours',
    d: 'a day',
    dd: '%d days',
    M: 'a month',
    MM: '%d months',
    y: 'a year',
    yy: '%d years'
  }
})

配置完之后测试一下:

console.log(dayjs().to(dayjs("2030-01-01"))); // 会输出你想要的 "5 years from now"
console.log(dayjs().to(dayjs("2020-01-01"))); // 过去时间会自动用past的格式,输出 "3 years ago"

保留原有locale配置,只修改需要的部分

如果你不想完全覆盖原有locale的所有配置,只想改future或者past的格式,可以先获取当前locale的配置,再做局部修改:

import dayjs from 'dayjs'
import relativeTime from 'dayjs/plugin/relativeTime'

dayjs.extend(relativeTime)

// 获取当前默认的英文locale配置
const originalEnLocale = dayjs.Ls.en

// 只修改future的格式,其他保留原有配置
dayjs.locale('en', {
  ...originalEnLocale,
  relativeTime: {
    ...originalEnLocale.relativeTime,
    future: '%s from now'
  }
})

这种方式更稳妥,不会不小心覆盖掉其他你不需要修改的时间单位文案。而且完全不用你担心判断过去还是未来的问题,Day.js会根据时间的自动识别方向,自动套用future或者past的格式,完美避开你说的那种拼接字符串的麻烦。

备注:内容来源于stack exchange,提问作者lonix

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 13:54:33