くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

Day.jsで相対日時を表示する(RelativeTime / thresholds)

Day.jsで「〇〇日前」とかの相対日時を表示したいなと思ったときの備忘録。

この記事がわかりやすく、ほぼ引用。
- Day.jsで相対日時を厳密に表示する(thresholds)

相対日時を表示するのは、RelativeTimeプラグインを使えばOK

相対日時を表示する

import dayjs from "dayjs"

// 相対日時のプラグインを有効化
import relativeTime from "dayjs/plugin/relativeTime"
dayjs.extend(relativeTime)

// 日本語で ◯日前 のように表示する場合
import 'dayjs/locale/ja';
dayjs.locale('ja');

// 指定時刻から現在時刻との相対時間を取得
dayjs('2021-01-24T01:00:00').fromNow() // => 1時間前

これだけで相対日時を表示できるけど、
若干思ってたのと違う表示になる。。

以下のドキュメントを見てみると、
どうやら思ってる範囲と違うらしい。。

相対日時を厳密に表示する

表示する範囲はカスタマイズできるらしく、 以下のドキュメントに書かれている設定をすると厳密になる。

// 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' },
  { l: 'yy', d: 'year' }
];
dayjs.extend(relativeTime, { thresholds });

この設定の詳しい説明はないので、ソースを読む必要があるっぽい。

以上!!

参考にしたサイト様