Power Automateの日付・時刻の扱い方|formatDateTime・convertTimeZoneでUTCズレを直す
はじめに
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 の時刻はすべて「UTC」
まず押さえるべき最重要ポイントです。Power Automate が内部で扱う時刻は、すべて協定世界時(UTC)です。日本時間(JST)は UTC より 9 時間進んでいるため、何も変換せずに時刻を使うと「9 時間ずれる」ことになります。
現在時刻を返す utcNow() の出力を見てみましょう。次のように Z(=UTC)付きの ISO 8601 形式で返ってきます。

出力は 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 に変換されます。

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

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

日付の表示形式を変える:formatDateTime
日付の見た目を変えるのが formatDateTime です。第 2 引数に書式指定文字列を渡します。よく使うパターンをまとめました。
yyyy/MM/dd→ 2026/07/06yyyy年MM月dd日→ 2026年07月06日yyyyMMdd_HHmmss→ 20260706_152128(ファイル名向き)MM-dd (ddd)+ ロケールja-JP→ 07-06 (月)
たとえば yyyy/MM/dd を指定すると 2026/07/06 が返ります。
formatDateTime(utcNow(), 'yyyy/MM/dd')
日本語表記 yyyy年MM月dd日 なら 2026年07月06日 です。

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

曜日を含めたい場合は、第 3 引数にロケール ja-JP を渡すと ddd が日本語の曜日になります。MM-dd (ddd) なら 07-06 (月) です。
formatDateTime(utcNow(), 'MM-dd (ddd)', 'ja-JP')
曜日を取得する:dayOfWeek と日本語曜日
曜日を数値で取るには dayOfWeek を使います。返り値は 0=日曜、1=月曜、…、6=土曜 です。下は dayOfWeek(utcNow()) の結果で、UTC の月曜日なので 1 が返っています。

これを「月」「火」などの日本語にするには、曜日の配列を作ってインデックスで引くのが定番です。日本時間の曜日にしたいので、convertTimeZone で JST に直してから dayOfWeek を取ります。
createArray('日','月','火','水','木','金','土')[dayOfWeek(convertTimeZone(utcNow(),'UTC','Tokyo Standard Time','o'))]この実行では日本時間が火曜日だったため 火 が返りました(同じ瞬間でも UTC では月曜、JST では火曜と日付・曜日がまたぐ好例です)。

日付を加算・減算する
「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)

日付を比較する
「今日が基準日を過ぎているか」などの判定は、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 の行操作や定期実行など、日付の整形とあわせてよく使うテクニックはこちらも参考にしてください。






