Luxonを使ってkintoneの日付や日時フィールドのフォーマットをカスタマイズする
はじめに
LuxonはMoment.jsの後継的なライブラリにあたり、日付を処理できます。
この記事では、kintoneカスタマイズにおけるLuxonの導入方法や、日時フォーマットの変更などのよくある日付処理をLuxonで扱う方法を紹介します。
Luxonとは
Luxonは日付データのフォーマット、バリデーション、計算、表示するためのJavaScriptライブラリです。
ソースコードは
GitHub
にあり、
公式ドキュメント
も公開されています。
Moment.jsとの違い
メリット1:Luxon単体でタイムゾーンを扱える
Moment.jsでタイムゾーンに関する操作を扱う場合、
Moment Timezone
というライブラリの追加が必要でした。
参考:
Moment Timezoneを使って簡単時差管理
Luxonは単体でタイムゾーンに対する操作ができます。
|
|
メリット2:Luxonで生成するオブジェクトはイミュータブルなオブジェクト
イミュータブルなオブジェクトとは、作成した後に状態が変わらないオブジェクトのことです。
Moment.jsのオブジェクトはミュータブルなため(イミュータブルではないため)、日付の加算などの操作をすると操作元のオブジェクトも変更されます。
|
|
Moment.jsで元のオブジェクトに影響させたくない場合は、オブジェクトを複製し、複製したオブジェクトに対して操作する必要がありました。
|
|
Luxonはイミュータブルなオブジェクトのため、日付の加算などを行っても、元のオブジェクトが変更されることはありません。
|
|
注意点:ブラウザーによっては利用できない機能がある
Luxonは主要ブラウザーのメジャーバージョンの2世代前までを公式にサポートしています。
詳細は公式サイト> Support matrixの
Official support
を参照してください。
kintoneカスタマイズでの導入方法
次のURLをkintoneの「JavaScript / CSSでカスタマイズ」画面から指定し、その後にカスタマイズファイルを指定します。
- https://js.cybozu.com/luxon/3.6.1/luxon.min.js
上記URLは、2025年7月9日時点でのCybozu CDNで配信されている最新バージョンのURLです。
Luxonを導入する際は、
Cybozu CDN
を確認し、必要に応じて配信されているバージョンを変更してください。
Luxonの使い方
基本編
CDNを読み込むと、グローバルオブジェクトとしてluxonが追加されています。
これを使って、Luxonオブジェクトを生成してみましょう。
|
|
いろいろな書式の文字列を取得してみましょう。
その他の書式については、公式サイト>
Formatting
をご参考ください。
|
|
x日後や月初などの日付を操作してみましょう。
その他の操作については、公式サイト>
Math
をご参考ください。
|
|
kintoneカスタマイズでの実用例
cybozu developer networkのTipsで紹介している日付計算を、Luxonを使って実装してみましょう。
年齢や経過年数を計算する
経過年数を表示する
では、生年月日フィールドから年齢の計算や、入社年月日フィールドから入社してからの経過年月を計算しています。
これらの計算をLuxonを使って行ってみましょう。
カスタマイズを適用するアプリには、以下のフィールドがあるものとします。
| フィールド名 | フィールドの種類 | フィールドコード |
|---|---|---|
| 生年月日 | 日付 | BirthDay |
| 入社年月日 | 日付 | JoiningDay |
サンプルコードでは、アプリのレコードの詳細画面を開いたときに、年齢や入社してからの経過年月を開発者ツールのコンソールに表示します。
|
|
期限を過ぎているかを計算する
期限フィールドの値で、「期限が過ぎているか」や「期限のn日前を過ぎているか」をLuxonを使って計算してみましょう。
カスタマイズを適用するアプリには、以下のフィールドがあるものとします。
| フィールド名 | フィールドの種類 | フィールドコード |
|---|---|---|
| 期限 | 日付 | LimitDay |
サンプルコードでは、アプリのレコード一覧画面を開いたとき、それぞれのレコードが期限を過ぎていた場合や期限の5日前を過ぎていた場合に、開発者ツールのコンソールに表示します。
|
|
おわりに
LuxonやMoment.jsといった日付処理ライブラリを使うと、JavaScriptのDate型では面倒な日付処理を楽に扱うことができます。
kintoneカスタマイズで日付処理をしたいときには、ぜひこちらもご参考ください。
またMoment.jsからLuxonに移行する際には、公式サイトの
For Moment users
をご参考ください。
このTipsは、2025年6月版kintoneで動作を確認しています。
