Microsoft 365

Power Automate フローでのタイムゾーン操作

プログラムで日時を扱うと「タイムゾーン」の考慮が必要になります。ローコードな Power Automate でもこれは変わりません。この投稿では、フローでタイムゾーンを変換する方法と、ありがちな落とし穴について紹介します。

基準は UTC

Power Automate のタイムゾーンは UTC(協定世界時)です。JST(日本標準時) とは時差が 9 時間あるため、フローで日本時間を扱い場合には、アクションや関数を利用してタイムゾーン変換を行う必要があります。

アクション「タイムゾーンの変換」

「日付」コネクタの「タイムゾーンの変換」アクションを利用します。
変換元、変換先を定義するだけなので、簡単です。

image

関数

関数で直接変換することもできます。

ConvertFromUtc :
UTC から別のタイムゾーンに変換します。

ConvertFromUtc(triggerOutputs()['headers']['x-ms-user-timestamp'],'Tokyo Standard Time') 

ConvertTimeZone
指定したタイムゾーンから別のタイムゾーンに変換する場合に利用します。
「タイムゾーンの変換」アクションと同じように指定できます。

ConvertTimeZone(triggerOutputs()['headers']['x-ms-user-timestamp'],'Pacific Standard Time','Tokyo Standard Time') 

convertToUtc関数:
タイムゾーンをUTCに変換する場合に利用します。

convertToUtc(triggerOutputs()['headers']['x-ms-user-timestamp'],'Tokyo Standard Time') 

よくあるミス@SharePoint Online

ただし、変換した日付や時刻を他サービスり利用する場合、そのサービスでのタイムゾーン設定との兼ね合いを考慮する必要があります。例えば、SharePoint Online ではサイトコレクション単位やユーザー単位でロケーション情報が設定されています。

試しに、SharePoint Online のカスタムリストに、日本時間に変換した日時を記録するシンプルなフローを設計して動かしてみます。

image

フローの実行履歴から、このフローはUTC 4:36 (JST 13:36) に実行されていることが分かります。

image 1

ところが、実際に SharePoint Online 上の値を確認すると…
「23:36」です。

image 2

これは、フローによる変換と、SharePoint Online のローケーション設定が二重になった為です。フローが+9:00し、さらに SharePoint Online が +9:00 した結果、UTC+18:00 で出力されてしまいました。このように、SharePoint Online では自動的にタイムゾーン変換が行われるため、フロー上での変換は不要です。

image 3

SharePoint Online に限らず、ロケーションにあわせたタイムゾーン変換を行なってくれるサービスは多いので「あれ?」とならないためにも、まず出力先のサービスでタイムゾーンがどのように扱われるかを確認したほうがいいですね。