JavaScriptの日時処理は、正直なところ素晴らしいとはとても言えません。そのため有志による日時処理のライブラリ群は非常に充実しています。

しかしそのうちのどれかが気にいるとは限りません。個人個人によって好みがあるので、どのライブラリを使っても全くピンとこないということもあります。

そこで、私も自分用の新しいライブラリを作ってみました。一人だけで使うのは勿体無いので、公開することにしました。

femtofiber

femtofiberはJavaScriptで日時を扱うための、シンプルなライブラリです。また、ブラウザとNode.jsの両方に対応しているので、お好きな場面で使うことができます。

以下のURLからダウンロードできます。

まだ作ったばかりなので機能は少ないですが、最低限のものは備えています。

インストール(Node.jsなし、ブラウザ向け)

Node.jsではなくクライアント側で使用する場合のインストール方法です。

まずGitHubのリリースページからzipファイルをダウンロードして展開します。

https://github.com/kotofurumiya/femtofiber/releases

そうしたらbuildディレクトリの中に「femtofiber.min.js」というファイルがあるので好きなところに置きます。他のファイルはNode.js向けなので捨ててしまって構いません。

あとはscriptタグで「femtofiber.min.js」を読み込み、スクリプトを自由に書くだけです。

インストール(Node.js、サーバ向け)

Node.jsを使う場合はnpm installするだけです。

あとはfemtofiberを使用するファイル内でimportします。

基本的な使い方

Femtoの作成

femtofiberの中核をなすのはFemtoオブジェクトです。Femtoオブジェクトは様々な方法で作成することができます。

Femtoオブジェクトはイミュータブルです。つまり一度作成したFemtoの値は変更することができません。

プロパティ

作成したFemtoオブジェクトからは、情報を取り出すことができます。

JavaScriptのDateとは違い、月は1から12の値になります。

文字列化

Femtoオブジェクトは文字列にすることができます。

toISOStringメソッドを使うことにより、ISO文字列にすることが可能です。

より柔軟に文字列化したい場合は、以下のようにします。

ここで「YYYY」や「MM」といった文字は、トークンと呼ばれます。トークンは自動的に数値で置き換えられます。トークンの配置を工夫することで、様々な文字列を作り出すことができます。

計算

femtofiberでは日時の加算・減算もできます。計算にはDurationオブジェクトを使用します。

このときFemtoはイミュータブルなため値は変更されないので、新しくFemtoを返します。

Durationオブジェクトは引数を工夫することで様々な期間を作成することができます。

比較

時刻の比較もできます。「この時間より前か」「この時間より後か」などを計算することができます。

isBefore、isAfterは、値が同じ時falseを返します。同じ値でもtrueにしたい場合は、isSameOrBeforeおよびisSameOrAfterを使用してください。

これはisBetweenでも同様に、Femtoが両端の値と同じだった場合はfalseを返します。isBetweenの場合は、第三引数にオプションを渡すことによって挙動を変更できます。

変換

Femtoオブジェクトは、Dateオブジェクトやエポック秒に変換することができます。

APIドキュメント

より詳しい情報が欲しい時は、APIドキュメントをご覧ください。

https://kotofurumiya.github.io/femtofiber/

ライセンス

ライセンスはMIT Licenseです。ご自由にお使いください。