Day.js 中文文档

当前版本 v1.11

更多文档

相对时间

Locale#relativeTime 应该是 dayjs#from 的替换字符串的对象。

需要配合 UpdateLocale 插件才能工作

dayjs.extend(updateLocale)

dayjs.updateLocale('en', {
  relativeTime: {
    future: "in %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"
  }
})

Locale#relativeTime.future 指未来日期的前缀/后缀。Locale#relativeTime.past 指过去日期的前缀/后缀。

对于所有其他字符,单字符表示单数,双字符表示复数。

额外的令牌处理

如果语言环境需要对令牌进行额外处理,则可以将令牌设置为具有以下签名的函数,而不是字符串。该函数应返回一个字符串。

relativeTime: {
  ...,
  yy: function (number, withoutSuffix, key, isFuture) {
    return string;
  }
}

number 参数指的是该键的单位数。对于 m,数字是分钟数等。

如果令牌不带后缀显示,则 withoutSuffix 参数将为 true,如果带后缀显示,则为 false。(倒置逻辑的原因是因为默认行为是用后缀显示。)

key 参数引用 Locale#relativeTime 对象中的替换键。(如 s m mm h 等)

如果要使用未来的后缀/前缀,则 isFuture 参数将为真;如果要使用过去的前缀/后缀,则为假。

相对时间阈值和舍入

你可以在使用此插件更新其阈值和舍入配置时传递配置对象。

var config = {
  thresholds: [{}],
  rounding: function
}
dayjs.extend(relativeTime, config)

thresholdsObjectArray,当单位被视为分钟、小时等时定义。例如,默认情况下超过 45 秒被视为一分钟,超过 22 小时被视为一天等等。要更改这些,你可以像这样传递一个新的 thresholds

// strict thresholds
var thresholds = [
  { l: 's', r: 1 },
  { l: 'm', r: 1 },
  { l: 'mm', r: 59, d: 'minute' },
  { l: 'h', r: 1 },
  { l: 'hh', r: 23, d: 'hour' },
  { l: 'd', r: 1 },
  { l: 'dd', r: 29, d: 'day' },
  { l: 'M', r: 1 },
  { l: 'MM', r: 11, d: 'month' },
  { l: 'y', r: 1 },
  { l: 'yy', d: 'year' }
]

你还可以添加自己的阈值键并相应地更新区域设置。

var thresholds = [
  ...,
  { l: 'ss', r: 59, d: 'second' }
]
dayjs.updateLocale('en', {
  relativeTime: {
    ...,
    ss: "%d seconds"
  }
})

rounding 是一个 Function,用于在将数字提供给区域设置中指定的 relativeTime 格式字符串之前对其进行处理。要更改这些,你可以像这样传递一个新的 rounding

// Math.round by default
var rounding = Math.floor

Day.js 中文文档 - 粤ICP备14034220号-1