相対時間
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
は、ロケールで指定されたrelativeTime形式文字列に供給する前に数値を処理するFunction
です。これらを変更するには、次のように新しいrounding
を渡すことができます。
// Math.round by default
var rounding = Math.floor