Node.jsを使った開発において、日時の操作は頻繁に必要となります。
従来、Moment.jsが日時操作の定番ライブラリでしたが、軽量かつモダンな設計のLuxonが登場し、多くのプロジェクトで採用されています。
本記事では、Luxonを使用した基本的な日時操作から、応用例まで詳しく解説します。
目次
Luxonの導入方法
まずはLuxonをプロジェクトに追加しましょう。
1 |
npm install luxon |
これで準備完了です。
Luxonでの基本的な日時操作
現在の日時を取得する
Luxonを使用して現在の日時を取得するには、以下のコードを使用します。
1 2 3 4 |
const { DateTime } = require('luxon'); const now = DateTime.now(); console.log(now.toISO()); // ISO 8601形式で出力 |
DateTime.now()
で現在の日時を簡単に取得でき、toISO()
を使用してISO 8601形式の文字列として出力できます。
1時間後の日時を取得する
以下のコードで現在時刻から1時間後の日時を取得可能です。
1 2 |
const oneHourLater = DateTime.now().plus({ hours: 1 }); console.log(oneHourLater.toISO()); |
特定の日時を生成する
指定した年、月、日、時刻の日時を生成する方法です。
1 2 3 4 5 6 7 8 9 |
const specificDate = DateTime.fromObject({ year: 2038, month: 1, day: 1, hour: 0, minute: 0, second: 0 }); console.log(specificDate.toISO()); |
fromObject
メソッドを使用して、自由に日時を構成できます。
日時のフォーマット
Luxonでは、日時のフォーマットをカスタマイズ可能です。
1 2 |
const formattedDate = DateTime.now().toFormat('yyyy-MM-dd HH:mm:ss'); console.log(formattedDate); // 例: 2025-01-03 14:30:00 |
toFormat
メソッドにフォーマット文字列を渡すだけで、任意の形式に変換できます。
日時の差分を計算
2つの日時の間の差分を計算することも簡単です。
1 2 3 4 |
const start = DateTime.now(); const end = start.plus({ days: 2, hours: 5 }); const diff = end.diff(start, ['days', 'hours']); console.log(diff.toObject()); // { days: 2, hours: 5 } |
Luxonの利点
- モダンなAPI設計:Moment.jsに比べて軽量で洗練されたAPI
- タイムゾーンのサポート:デフォルトでIANAタイムゾーンデータベースを使用
- ISO 8601対応:国際標準フォーマットを簡単に操作可能
Luxonは、シンプルな日時操作から高度なタイムゾーン管理まで、多岐にわたる機能を提供しています。
コメント