自動化
PR

Power Automateの日付・時刻の扱い方|formatDateTime・convertTimeZoneでUTCズレを直す

sanane
記事内に商品プロモーションを含む場合があります

はじめに

Power Automate でフローを作っていると、ほぼ必ず「日付・時刻の扱い」でつまずきます。「utcNow() の時刻が 9 時間ずれる」「日付の形式を 2026/07/07 のように変えたい」「曜日を出したい」「タイムゾーン変換でエラーが出る」——どれも定番の悩みです。

本記事では、Power Automate の日付・時刻関数(utcNow / convertTimeZone / formatDateTime / dayOfWeek / addDays など)の使い方を、「式 → 実際の出力」を実際の実行画面つきで解説します。すべて標準機能だけで、追加のコネクタもプレミアムライセンスも不要です。

こんな人にオススメ
  • Power Automate の時刻が 9 時間ずれる理由と直し方を知りたい
  • 日付を「2026年07月07日」「07-07(火)」のように整形したい
  • 曜日の取得・日付の加算減算・比較のやり方を一気に押さえたい

Power Automate の基本・料金・他の実例一覧はこちら。

あわせて読みたい
Power Automateとは?できること・使い方・始め方を実例28本で解説
Power Automateとは?できること・使い方・始め方を実例28本で解説

大原則:Power Automate の時刻はすべて「UTC」

まず押さえるべき最重要ポイントです。Power Automate が内部で扱う時刻は、すべて協定世界時(UTC)です。日本時間(JST)は UTC より 9 時間進んでいるため、何も変換せずに時刻を使うと「9 時間ずれる」ことになります。

現在時刻を返す utcNow() の出力を見てみましょう。次のように Z(=UTC)付きの ISO 8601 形式で返ってきます。

utcNow()の実行結果。出力は2026-07-06T14:43:45ZのUTC。プロパティ欄の現地時刻(JST)は同日23:43で9時間差

出力は 2026-07-06T14:43:45Z(UTC)。同じ瞬間の日本時間はプロパティ欄の「現地時刻」で 23:43 と表示されており、ちょうど 9 時間ずれていることが読み取れます。この UTC を日本時間に直すのが次の convertTimeZone です。

日本時間に変換する:convertTimeZone

UTC を日本時間へ変換するには convertTimeZone 関数を使います。書式は次のとおりです。

convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time', 'yyyy/MM/dd HH:mm:ss')

実行すると、先ほどの UTC が日本時間 2026/07/06 23:43:45 に変換されます。

convertTimeZoneで東京時間に変換した出力2026/07/06 23:43:45

タイムゾーンIDは Tokyo Standard Time(Windows のタイムゾーン名)を使います。Asia/Tokyo(IANA形式)も受け付けられますが、JSTJapan のような独自の書き方はエラーになります。次の項で実際のエラーを見てみましょう。

タイムゾーンIDを間違えるとどうなるか

試しに存在しないタイムゾーンID(Invalid/Timezone)を指定すると、フローは失敗し次のエラーが出ます。「the value provided for the time zone id ... was not valid」=タイムゾーンIDが無効、という意味です。

無効なタイムゾーンIDを指定してconvertTimeZoneがInvalidTemplateエラーになった画面

正しいID(Tokyo Standard Time)に直して再実行すれば、すべてのアクションが成功します。「タイムゾーン変換でエラーが出る」ときは、まずこの ID の綴りを疑ってください。

正しいタイムゾーンIDに修正後、フロー全体が緑チェックで成功

日付の表示形式を変える:formatDateTime

日付の見た目を変えるのが formatDateTime です。第 2 引数に書式指定文字列を渡します。よく使うパターンをまとめました。

  • yyyy/MM/dd2026/07/06
  • yyyy年MM月dd日2026年07月06日
  • yyyyMMdd_HHmmss20260706_152128(ファイル名向き)
  • MM-dd (ddd) + ロケール ja-JP07-06 (月)

たとえば yyyy/MM/dd を指定すると 2026/07/06 が返ります。

formatDateTime(utcNow(), 'yyyy/MM/dd')
formatDateTimeでyyyy/MM/ddを指定した出力2026/07/06

日本語表記 yyyy年MM月dd日 なら 2026年07月06日 です。

formatDateTimeでyyyy年MM月dd日を指定した出力2026年07月06日

バックアップファイル名などに使う yyyyMMdd_HHmmss20260706_152128 のようなタイムスタンプになります。

formatDateTimeでyyyyMMdd_HHmmssを指定したタイムスタンプ出力20260706_152128

曜日を含めたい場合は、第 3 引数にロケール ja-JP を渡すと ddd が日本語の曜日になります。MM-dd (ddd) なら 07-06 (月) です。

formatDateTime(utcNow(), 'MM-dd (ddd)', 'ja-JP')
formatDateTimeにロケールja-JPを指定して07-06 (月)と日本語曜日で出力

formatDateTime(utcNow(), ...)UTC のまま整形する点に注意。日本時間で表示したいなら、formatDateTime(convertTimeZone(utcNow(),'UTC','Tokyo Standard Time'), ...) のように 先に日本時間へ変換してから 整形します。

曜日を取得する:dayOfWeek と日本語曜日

曜日を数値で取るには dayOfWeek を使います。返り値は 0=日曜、1=月曜、…、6=土曜 です。下は dayOfWeek(utcNow()) の結果で、UTC の月曜日なので 1 が返っています。

dayOfWeek(utcNow())の出力は1(月曜日)

これを「月」「火」などの日本語にするには、曜日の配列を作ってインデックスで引くのが定番です。日本時間の曜日にしたいので、convertTimeZone で JST に直してから dayOfWeek を取ります。

createArray('日','月','火','水','木','金','土')[dayOfWeek(convertTimeZone(utcNow(),'UTC','Tokyo Standard Time','o'))]

この実行では日本時間が火曜日だったため が返りました(同じ瞬間でも UTC では月曜、JST では火曜と日付・曜日がまたぐ好例です)。

配列とdayOfWeekで日本語曜日「火」を取得した出力

日付を加算・減算する

「7 日後」「1 か月前」といった日付計算もよく使います。代表的な関数と出力は次のとおりです。

  • addDays(utcNow(), 7, 'yyyy/MM/dd')7 日後(例: 2026/07/11)
  • addHours(utcNow(), 9, 'yyyy/MM/dd HH:mm')9 時間後
  • startOfDay(utcNow()) → その日の 0 時 0 分
  • subtractFromTime(utcNow(), 1, 'Month', 'yyyy/MM')1 か月前(例: 2026/06)
addDaysで7日後の日付2026/07/11を出力した実行結果

addHours(utcNow(), 9) は「UTC+9時間」なので結果的に日本時間と同じ値になりますが、これはあくまで時間の加算でありタイムゾーン変換ではありません。夏時間などを正しく扱いたいなら convertTimeZone を使いましょう。

日付を比較する

「今日が基準日を過ぎているか」などの判定は、ISO 8601 形式(yyyy-MM-dd)の文字列にそろえて比較するのが簡単です。この形式は文字の並び順と時系列が一致するため、greater() / less() による文字列比較でそのまま日付の大小判定になります。

greater(formatDateTime(utcNow(), 'yyyy-MM-dd'), '2026-01-01')

今日が 2026-01-01 より後なら true が返ります。「条件」アクションで formatDateTime(utcNow(),'yyyy-MM-dd') を左辺、演算子「次の値より大きい」、右辺に基準日を入れても同じ判定ができます。より厳密にミリ秒単位で比較したい場合は ticks() 関数で数値化して比べます。

まとめ

Power Automate の日付・時刻は、「中身はすべて UTC」という一点さえ押さえれば、あとは関数の組み合わせです。要点を整理します。

  • 時刻は UTC。 日本時間にするなら convertTimeZone(..., 'Tokyo Standard Time')
  • 表示形式は formatDateTime 曜日を日本語にするならロケール ja-JP
  • UTCのまま整形すると曜日・日付がずれる。 先に convertTimeZone してから整形
  • 加算減算は addDays / subtractFromTime 比較は ISO 8601 の文字列で greater / less

Excel の行操作や定期実行など、日付の整形とあわせてよく使うテクニックはこちらも参考にしてください。

あわせて読みたい
Power AutomateでExcelの行を追加・取得・更新する方法|テーブル必須の理由と256行制限も解説
Power AutomateでExcelの行を追加・取得・更新する方法|テーブル必須の理由と256行制限も解説
あわせて読みたい
Power Automateとは?できること・使い方・始め方を実例28本で解説
Power Automateとは?できること・使い方・始め方を実例28本で解説
記事URLをコピーしました