Baby step - 思考と実験の足跡

日常のちょっとした、気になって試したこと集です。

Moment.jsからDay.jsに乗り換えたときにハマったこと

背景

JavaScriptで日付操作を行う有名なライブラリの1つに "Moment.js" があります。 プロジェクトでも利用していましたが「代替ライブラリを探すように」とのアナウンスがありました。

JavaScriptの日付操作ライブラリ「Moment.js」の開発チームは9月15日、プロジェクトのステータスとしてプロジェクトはメンテナンスモードに入り、代替ライブラリへの移行を推奨している。

cf. Moment.jsがメンテナンスモードへーー新機能開発は行わず | OSDN Magazine

代替ライブラリは "Day.js" に乗り換えることにしました。 (十分な機能があり、軽量で、Githubのスター数も多かったのが良さそう)

参考:

徐々にdayjsにコードを置き換えたのですが、数点ハマった箇所があったため備忘録としてまとめておきます。

ハマリポイント

日付フォーマット

const date = '2020-08-09';

// momentは以下でOK
moment(date).format('Y-M-D') // 2020-8-9

// dayjsはYが1つではダメ
dayjs(date).format('Y-M-D') // Y-8-9
dayjs(date).format("YY-MM-DD') // 20-08-09
dayjs(date).format('YYYY-MM-DD') // 2020-08-09

曜日フォーマット

const date = '2020-11-02'; // 月曜日

// momentはe
moment(date).format('e') // 1

// dayjsはd
dayjs(date).format('e') // e
dayjs(date).format('d') // 1

多言語対応

// momentをimportすればOK
import moment from 'moment'
moment.locale('ja');

// 言語ごとにimportが必要
import dayjs from 'dayjs';
import 'dayjs/locale/ja';
import 'dayjs/locale/en'; // 言語ごとに必要

dayjs.locale('ja');
dayjs.locale('en');

参考