Power Automateで時刻を日本時間へ変換する方法
2021-06-29
azblob://2022/11/11/eyecatch/2021-06-29-powerautomate-000.jpg

こんにちは、あおいです。

いきなりですが、こちらのブログ記事を見てくださった方はとある異変に気付いていると思われます。

Power AutomateとSharePointで承認ワークフローを作成する|cloud.config Tech Blog

「Outlook(Teams)で表示されている時間」と「Power Automateで処理した時間」が合っていなくて9時間ずれてしまっていますね。。。

9時間ずれてしまっている原因は、Power Automateで取得した日時がUTC(世界標準時)設定となっているからです。日本時間で表示したい場合は日本標準時(UTC+9)に変換、つまり世界標準時刻に9時間プラスさせる処理が必要です。

※GMTはグリニッジ標準時(平均時)「Greenwich mean time」の略。 英国のグリニッジ天文台(経緯0度)での地方平均時(平均太陽が南中する時を正午とする)のことで、天文観測(地球の自転)によって決められる時刻。 UTCは協定世界時「Universal time coordinated」の略で現在世界の基準となっている時刻。
※Tは日付のあとに時間を表記するための区切り文字。Zは世界標準時刻であるUTCのことを指している。



Power Automateで時刻を日本時間に変換する方法はいくつかありますが、今回は2パターン紹介します。

1つ目は addHours関数を使うことです。第1引数に日本時間に変換させたい時刻(動的なコンテンツから申請日を選択)、第2引数にプラスする時間(日本時刻に合わせるために9を入力)、第3引数に任意の書式設定文字列(今回は yyyy/MM/dd HH:mm ※hhをHHにすることで24時間表示にする)。

addHours(timestamp, hours, format?)



2つ目は[日時]コネクタで[タイムゾーンの変換]アクションを使うことです。

まずは[変数]コネクタで[変数を初期化する]アクションを選択します。変数の名前は適当にTimeとして種類を文字列変数に設定します。

次に[日時]コネクタを使います。基準時間[動的なコンテンツから 回答数 応答日(承認者がメールを送信した時間)]、変換元のタイムゾーン[(UTC)協定世界時]、変換先のタイムゾーン[(UTC+09:00)大阪、札幌、東京]を選択し、書式設定文字列では好みの書式文字列にカスタマイズします。

最後に[変数]コネクタで[変数を設定する]アクションを選択して、文字列型のTime変数の値に動的なコンテンツから[変換後の時間]を設定します。



あとはOutlookメール送信部分の承認日時を先程のTime変数を挿入すればいいだけですね。
それではもう一度SharePointにアイテムを追加してメール内容を確認してみましょう。




申請日時と承認日時にずれはなくきちんと日本時間に変換処理されて表示されているので成功です!
addHours関数と[日時]コネクタの[タイムゾーンの変換]アクションの2パターンで9時間ずれてしまう問題を解決することが出来ました!ちなみに、承認依頼で1分ずれていますがPower Automateの処理上の仕様なので問題はありません。



Power Automate上の処理における日本時間への変換方法の紹介は以上となります。
今回のように何らかの処理で日時が9時間ずれていたら、UTC(世界標準時)設定になっていないか疑ってみましょう!
今回はaddHours関数を使いましたが、日時操作の関数はPower Automateでたくさん用意されているので世界各国の標準時間に変換して遊んでみるのもアリですね!是非試してみてください!