6日目: @smarthr/wareki を探訪

業務系のWEBアプリケーションを開発していると、和暦を扱う機会が意外と多い。

そこまで難しいプログラムでもないのだが、この課題を解決するための OSS は世の中にあるはず、と思い探索したところ、 @smarthr/wareki に遭遇した。

SmartHR のニュースリリースでもあるように「H28.9.1」が「平成28年9月1日」に変換されるようなライブラリでわかりやすい。

smarthr.jp

コードをダウンロードしてざっと眺める。元号は明治〜令和までカバーしていた。

慶応以前は対応していないようなので、このあたりは使う側の要件を満たさないようであれば、自分で実装したほうが手っ取り早いかもしれない。

関数としては dateToWarekiwarekiToDate がある。 dateToWareki ではカバーしている日付の場合は「令和xx年x月x日」といった文字列を返してくれる。REPLで試す。

$ mkdir wareki-sandbox && cd $_
$ yarn init -y
$ yarn add ts-node typescript @smarthr/wareki
$ yarn ts-node
import { dateToWareki, warekiToDate } from '@smarthr/wareki';

const date = new Date(); // 2023-11-28T06:17:00.699Z

dateToWareki(date); // { isValid: true, result: '令和5年11月28日', formatted: '2023/11/28' }

warekiToDate('令和5年11月28日'); // { isValid: true, result: 2023-11-27T15:00:00.000Z, formatted: '令和5年11月28日' }

便利。コードは以下のレポジトリにあって、README等のドキュメントがなくても、単体テストを読んだらどういう振る舞いかがわかった。

github.com

ts-node 便利なのでサンドボックス用途のリポジトリを手元に作っておくと地味に役立ちそう。