相對時間
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
參數會為 true,如果要使用過去前綴/後綴,則為 false。
相對時間閾值和捨入
使用此外掛時,您可以傳遞設定物件來更新其閾值和捨入設定。
var config = {
thresholds: [{}],
rounding: function
}
dayjs.extend(relativeTime, config)
thresholds
是 Object
的 Array
,定義為何時將單位視為分鐘、小時等。例如,預設情況下,超過 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
。若要變更這些設定,您可以傳遞新的 rounding
,如下所示。
// Math.round by default
var rounding = Math.floor