🗓

Day.jsで Invalid Date を検出する方法

2024/01/30に公開

はじめに

JavaScriptの日付操作ライブラリであるDay.jsは、その軽量さと使いやすさで人気です。しかし、日付のバリデーションにおいては、Moment.jsとは異なる挙動を示します。この記事では、Day.jsを使用して不正な日付を検出する方法について解説します。

Day.jsとMoment.jsの違い

Day.jsとMoment.jsはどちらもJavaScriptで使用される日付操作ライブラリですが、isValid関数における挙動に大きな違いがあります。Moment.jsでは、isValid関数は日付の存在をチェックしますが、Day.jsでは単にフォーマットの可能性を判断します。

存在しない日付のバリデーション

※ Day.jsでisValid関数を使用すると、不正な日付(例:「2024年2月31日」)も有効と判断されます。

dayjs('2020/02/31', 'YYYY/MM/DD').isValid() // true
moment('2020/02/31', 'YYYY/MM/DD').isValid() // false

実際に存在する日付かどうかを判定するにはdayjs関数の第三引数に trueを入れることで判断できます。

dayjs('2020/02/31', 'YYYY/MM/DD', true).isValid() // false

Discussion