Skip to content
Day.js

简体中文

English
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

简体中文

English
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

主题

Sidebar Navigation

安装

Node.js

浏览器

TypeScript

下载

解析

当前时间

字符串

字符串 + 格式

Unix 时间戳 (毫秒)

Unix 时间戳(秒)

Date 对象

对象

数组

UTC

Day.js 克隆

验证

获取和设置

毫秒

秒

分钟

小时

日期

星期几

星期几(本地化感知)

ISO 星期几

一年中的天数

一年中的第几周

ISO 周数

月份

季度

年

周年份

ISO 周年份

一年中的 ISO 周数

获取

设置

最大值(最晚的时间)

最小值(最早的时间)

操作

添加时间

减去时间

时间单位的起点

时间单位的结束

本地化时间

UTC

UTC 偏移量

展示

格式化

从现在开始的时间

从 X 开始的时间

距离当前时间的相对时间

相对于 X 的时间

日历时间

差异

Unix 时间戳(毫秒)

Unix 时间戳

当月天数

转换为 JavaScript Date

转换为数组

转换为 JSON

ISO 8601 字符串格式

转换为对象

转换为字符串

查询方法

是否早于

是否相同

是否晚于

是否相同或更早

是否相同或之后

是否在两个时间之间

是否为 Day.js 对象

闰年判断

i18n (国际化)

在 NodeJS 中加载区域设置

在浏览器中加载区域设置

全局更改语言环境

局部更改区域设置

获取当前 Day.js 实例的语言环境

列出当前区域设置的月份和星期

访问区域设置相关的功能

插件

在 Node.js 中加载插件

在浏览器中加载插件

AdvancedFormat

ArraySupport

BadMutable

BigIntSupport

BuddhistEra(佛历)

日历

CustomParseFormat

DayOfYear

DevHelper

Duration

IsBetween

IsLeapYear

IsSameOrAfter

IsSameOrBefore

IsToday

IsTomorrow

IsYesterday

IsoWeek

IsoWeeksInYear

LocaleData

LocalizedFormat

MinMax

ObjectSupport

PluralGetSet

PreParsePostFormat

QuarterOfYear

RelativeTime

时区

ToArray

ToObject

UpdateLocale

UTC

weekOfYear

WeekYear

星期几

自定义

月份名称

月份缩写

星期几名称

星期缩写

最小星期缩写

相对时间

日历

时长

创建

克隆

转换为易读时间

格式化

毫秒

秒

分钟

小时

天

周

月份

年份

添加时间

减少时间

使用 Duration 和 Diff

以指定单位获取时长

获取指定时间单位的时长

转换为 JSON

判断是否为 Duration 对象

作为 ISO 8601 字符串

语言环境

时区

在指定时区中解析

转换为时区

获取用户时区

设置默认时区

页面导航

相对时间 ​

Locale#relativeTime 应该是一个对象,用于定义 dayjs#from 方法中相对时间的替换字符串。

TIP

这需要使用 UpdateLocale 插件才能生效。

js
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 用于表示过去日期的前缀/后缀。

对于其他所有情况,单个字符的键表示单数形式,双字符的键表示复数形式。

额外的 Token 处理 ​

如果某个 locale 需要对 token 进行额外的处理,可以将 token 的值设置为一个函数,而不是字符串。 该函数应返回一个字符串,其签名如下:

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

number 参数表示该键对应的数值。 例如,对于 m,该数值是分钟数。

withoutSuffix 参数表示是否显示后缀。 如果 token 在没有后缀的情况下显示,则该参数为 true;如果 token 在带有后缀的情况下显示,则该参数为 false。(采用反向逻辑的原因是,默认行为是显示后缀。)

key 参数指的是 Locale#relativeTime 对象中的键名(例如 s、m、mm、h 等)。

isFuture 参数表示是否使用将来的后缀/前缀。 如果使用将来的后缀/前缀,则该参数为 true;如果使用过去的后缀/前缀,则该参数为 false。

相对时间阈值和舍入 ​

您可以在使用此插件时传递一个配置对象,以自定义阈值和舍入配置。

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

thresholds 是一个 Object 类型的 Array,用于定义何时将一个时间单位视为一分钟、一小时等。 例如,默认情况下,超过 45 秒视为一分钟,超过 22 小时视为一天,依此类推。 要修改这些值,可以传递一个新的 thresholds,如下所示。

js
// 严格的阈值
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' },
];

您还可以添加自己的阈值键,并相应地更新语言环境。

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

rounding 是一个 Function,用于在将数值传递给 locale 中指定的 relativeTime 格式字符串之前,对该数值进行处理。 要更改这些值,可以传递一个新的 rounding 函数,如下所示。

js
// 默认值是 Math.round
var rounding = Math.floor;
Pager
上一页最小星期缩写
下一页日历

基于 MIT 许可证 发布。

版权所有 (c) 2020 iamkun

https://day.js.org/docs/en/customization/relative-time

基于 MIT 许可证 发布。

版权所有 (c) 2020 iamkun