生活や仕事に役立つライフハック、お得な情報を発信しています。⚠️記事内にPRを含みます

n8nの日付操作を完全攻略!Luxonを使ったタイムゾーン変換とフォーマット調整

n8nでワークフローを組んでいると、必ずと言っていいほど直面するのが「日付と時間」の壁です。

APIから取得した日時のタイムゾーンが日本時間になっていない。

ファイル名に今日の日付を入れたいけれど、形式が気に入らない。

特定の日時を基準に処理を分岐させたいのに、うまく比較できない。

こんなお悩み、ありませんか?

実は、n8nには「Luxon」という非常に強力な日付操作ライブラリが標準で搭載されており、これらの悩みはほぼすべて解決できます。

この記事では、2025年12月時点のn8nの仕様に基づき、Luxonを使ったタイムゾーン変換とフォーマット調整の基本から応用まで、具体的なコード例を交えて徹底的に解説します。

この記事を読めば、あなたもn8nの日付操作を完全にマスターできるはずです。

n8nの日付処理を理解する鍵「Luxon」とは?

n8nのワークフローで日付を扱う際、その裏側で活躍しているのがLuxonというライブラリです。まずは、なぜLuxonを知ることが重要なのか、その基本から押さえていきましょう。

なぜ、ただの文字列ではダメなのか

APIから返ってくる`2025-12-01T10:00:00Z`のような日時のデータは、一見するとただの文字列です。しかし、これには「2025年12月1日 午前10時」という情報に加え、「Z」つまり協定世界時(UTC)である、というタイムゾーンの情報も含まれています。n8nがこれを「日時オブジェクト」として正しく認識することで、初めて時間の足し算や引き算、タイムゾーンの変換といった高度な操作が可能になります。

n8nでは、この日時オブジェクトへの変換と操作を、Luxonが担っています。以前は`Moment.js`というライブラリが主流でしたが、Luxonはそのモダンな後継ライブラリと位置づけられており、より直感的で高機能な点が特徴です。

ExpressionsでLuxonを呼び出す基本形

n8nでLuxonを使うには、ノードのExpressions(式)を利用するのが一般的です。基本的な構文は非常にシンプルです。

{{ luxon('ここに日付データ').method() }}

luxon()関数でLuxonオブジェクトを生成し、その後に続くメソッド(method()の部分)で具体的な操作を行います。例えば、現在の日時を取得したい場合は、引数を空にして{{ luxon() }}と記述します。この基本形を覚えておくだけで、様々な応用が可能になります。

日付操作を制する者は、n8nの自動化を制すると言っても過言ではありません。Luxonを使いこなすことは、単なるテクニックではなく、より信頼性が高く、柔軟なワークフローを構築するための必須スキルなのです。

実践!タイムゾーン変換で世界中の時間を操る

海外のサービスAPIと連携する際、最も頻繁に発生するのがタイムゾーンの差異です。取得したデータがUTC(協定世界時)やPST(太平洋標準時)で返ってくることは日常茶飯事。これを日本のユーザーにとって分かりやすいJST(日本標準時)に変換する方法をマスターしましょう。

UTCからJSTへの基本的な変換方法

例えば、あるAPIから{{ $json.createdAt }}という値で`2025-12-25T00:00:00.000Z`というUTCの日時が取得できたとします。これを日本時間に変換するExpressionsは以下のようになります。

{{ luxon($json.createdAt).setZone('Asia/Tokyo') }}

ポイントは.setZone('Asia/Tokyo')の部分です。setZoneメソッドは、日時オブジェクトのタイムゾーンを、指定した地域のものに変更します。`Asia/Tokyo`は、IANAタイムゾーンデータベースで定められた日本の識別子です。これにより、n8nは内部的に「これは日本時間だな」と認識し直してくれます。アメリカ西海岸なら`America/Los_Angeles`のように指定します。

よくある間違い:「JST」と指定してもうまくいかない?

初心者が陥りがちなのが、.setZone('JST')のように略称で指定してしまうことです。Luxonは`JST`のような略称を正式にサポートしておらず、意図しない挙動になる可能性があります。必ず「Area/City」形式の正式なIANAタイムゾーン名を使いましょう。これは、サマータイムの有無などを正確に反映するためにも非常に重要です。

タイムゾーンの壁を乗り越えることは、グローバルなサービスと連携する自動化ワークフローを構築する上での第一歩です。setZoneを使いこなして、世界中の時間をあなたのワークフローの味方につけましょう。

フォーマット調整で見やすい日付表現をマスターする

タイムゾーンを正しく設定できたら、次はその日時を人間にとって見やすい形式(フォーマット)に整える方法です。例えば、そのままでは`2025-12-25T09:00:00.000+09:00`のように表示されてしまうものを、「2025年12月25日」や「2025/12/25 09:00」といった分かりやすい文字列に変換します。

toFormatメソッドが最強の味方

この変換で絶大な威力を発揮するのがtoFormatメソッドです。先ほどのタイムゾーン変換の例に続けて、フォーマットを調整してみましょう。

{{ luxon($json.createdAt).setZone('Asia/Tokyo').toFormat('yyyy年MM月dd日 HH:mm') }}

この式を実行すると、出力結果は`2025年12月25日 09:00`という、非常に見やすい文字列になります。toFormatの引数に指定している文字列が、フォーマットの設計図です。

  • yyyy: 4桁の年 (e.g., 2025)
  • MM: 2桁の月 (e.g., 09, 12)
  • dd: 2桁の日 (e.g., 01, 25)
  • HH: 24時間表記の時 (e.g., 09, 15)
  • mm: 2桁の分
  • ss: 2桁の秒

これらの記号を組み合わせることで、`yyyy-MM-dd`(`2025-12-25`)や`M月d日(EEE)`(`12月25日(木)`)のように、あらゆる形式の文字列を自由自在に生成できます。※(EEE)は曜日の略称

実践例:ファイル名に今日の日付を使う

日付のフォーマット調整は、レポートファイル生成などで特に役立ちます。例えば「report_20251225_0900.csv」のように、生成日時の情報をファイル名に含めたいケースです。

これは、現在の日時を使って以下のようなExpressionで実現できます。

{{ 'report_' + luxon().setZone('Asia/Tokyo').toFormat('yyyyMMdd_HHmm') + '.csv' }}

luxon()で現在日時を取得し、タイムゾーンを日本に設定後、toFormatでファイル名に適した形式の文字列に変換し、前後に固定の文字列を結合しています。これにより、いつ生成されたファイルなのかが一目瞭然になり、管理が格段に楽になります。

まとめ:Luxonを制してn8nを次のレベルへ

この記事では、n8nにおける日付操作の核心であるLuxonライブラリに焦点を当て、特に重要なタイムゾーン変換(`setZone`)フォーマット調整(`toFormat`)について解説しました。

これらのテクニックを使えば、APIから取得した日時を日本のユーザー向けに整形したり、動的なファイル名を生成したりと、ワークフローの表現力と実用性が飛躍的に向上します。

n8nの基本的な使い方から、さらに高度なテクニックまで網羅的に学びたい方は、全体像を掴むための「n8n完全ガイド記事」もぜひ併せてご覧ください。あなたの自動化への理解が、さらに深まるはずです。

この記事を読んで「n8n、もっと使ってみたい!」と感じた方は、まずは無料プランからでもその強力な機能を試してみることを強くおすすめします。以下の公式リンクからサインアップすれば、すぐにあなただけの業務自動化ワークフロー構築を始めることができます。今日から、面倒な手作業をn8nに任せてみませんか?

>>無料でn8nを始めて、業務自動化への第一歩を踏み出す