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