dayjs
https://gyazo.com/7f3acbfbe955f8dcd2bab7368592bdde
2.8KBな日付管理コンポーネント
ちなみにdate-fnsは18KB
ちなみにmoment.jsは70.4KB
docs
github
dayjsのタイムゾーン
dayjsのlocaleの設定
localeの確認
code:ts
console.log(dayjs().format('dddd, MMMM D, YYYY h:mm A'));
デフォルトではFriday, September 18, 2020 1:52 PMのように英語で表示される
以下の設定をすると金曜日, 9月 18, 2020 1:52 午後となる
code:ts
import dayjs from 'dayjs';
import 'dayjs/locale/ja';
dayjs.locale('ja');
pluginの追加
型を考えると非直感的になる
code:ts
import isBetween from 'dayjs/plugin/isBetween';
const f = () => {
dayjs.extend(isBetween);
const isPublish = dayjs(new Date()).isBetween(publishStartAt, publishEndAt);
}
型
https://github.com/iamkun/dayjs/issues/364#issuecomment-643755153
dayjsのformat
https://day.js.org/docs/en/display/format#docsNav
dayjs(date).format('..')とかやった時に、dateの値がおかしいと、"Invalid Date"になることに注意
型が変わらずstringなので気にしていないと気づけないmrsekut.icon
startOf, endOf
0:00:00~23:59:59とか
code:ts
console.log(dayjs('2019-01-10 07:30:20').startOf('day').format()); // '2019-01-10T00:00:00+09:00'
console.log(dayjs('2019-01-10 07:30:20').endOf('day').format()); // '2019-01-10T23:59:59+09:00'
https://day.js.org/docs/en/query/is-same#docsNav
dayjs().isSame(dayjs('2011-01-01')って何とsameなん?
dayjs()の部分がDayjs型のobjectてことか
code:ts
const day = dayjs(なんか)
day.isSame(..)
isToday
これごときでplugin追加したくない
code:ts
const isToday = day.isSame(new Date(), 'day');
dayjs().isAfter
code:_
今日.isAfter(明日) // false
明日.isAfter(今日) // true
fromNow
dayjs.locale('ja');があれば日本語にはなる
もっと細かく表示を切り替える
例えばdefaultでは「22時間前」は「1日前」と表示される
この辺のカスタマイズも可能
https://zenn.dev/catnose99/articles/ba540f5c233847
https://day.js.org/docs/en/customization/relative-time#relative-time-thresholds-and-rounding
#??
pluginを追加したときに、tsエラーが出るのはどう解決する