memomoji | nanamoji

Microsoft365周辺、Power Appsの勉強、備忘録

Power Automate でイベントの日時を適当に登録して世界に思いをはせた話

この記事は、Power Automate Advent Calendar 2023 12月8日に参加しているものです。

qiita.com

日時の取り扱いについては先人の詳しくわかりやすい記事やスライドが沢山あります。それらを見て聞いてすっかり知ったつもりになっていましたが、さて自分でフローを作ってみるとよくわかってなかったので整理してみたよというお話です。

前置 作ったフローと結果

当番を各自のスケジュールに登録するために、SharePoint Lists で作成した当番表から定期的にイベントを登録するフローを作成しました。

当番表リスト

startDateTimeとendDateTimeは計算列で日付と時刻にしています。
※ 日付時刻をカレンダーから選択するのも、「11:00」のように時間の間にコロンを入力するのもあまり好きではないのでこういう形にしています。コロンの入力って面倒ですよね?

ちゃちゃっとフローを作成

わーいできた

こんな感じでシンプルなフローを作って実行してみると、いい感じで登録されました。ちらっと「タイムゾーンの変換」というアクションが頭をよぎりましたが、なんだこれでいいんじゃないかと思っていました。

想定外だったこと

ところがその予定の編集しようとしてみると、時間がUTCになっています。

予定表の編集画面

SharePointの日時がUTCで保存されていることは知っていたのでそりゃそうかとも思いましたが、さっきのフローで日本時間を選んだのはなんだったんだろうと気になります。

試してみた

以下のようにイベントの作成の時刻とタイムゾーンを変えて試してみました。

No. 開始終了時刻 タイムゾーン 予定表の表示時刻 編集画面の表示時刻
01 リストそのまま UTC UTC
02 リストそのまま UTC+09:00 UTC
03 タイムゾーンの変換後の時間 UTC × 9時間遅れ UTC
04 タイムゾーンの変換後の時間 UTC+09:00

予定表の表示
左が日本時間の人(開催者)、右がイギリスに住んでいる人(タイムゾーンUTC)の予定表です。3だけが想定外の時間に予定されてしまっています。
なお、開催者がイギリスに住んでいる人だった場合も、同じ結果になります。

次に、実行結果を見てみました。

アクション 出力された開始時刻
項目の取得 2023-11-28T02:00:00Z
タイムゾーンの変換 2023-11-28T11:00:00.0000000
アクション 入力された開始時刻 start startWithTimeZone
01 2023-11-28T02:00:00Z 2023-11-28T02:00:00.0000000 2023-11-28T02:00:00+00:00
02 2023-11-28T02:00:00Z 2023-11-28T02:00:00.0000000 2023-11-28T02:00:00+00:00
03 2023-11-28T11:00:00.0000000 2023-11-28T11:00:00.0000000 2023-11-28T11:00:00+00:00
04 2023-11-28T11:00:00.0000000 2023-11-28T11:00:00.0000000 2023-11-28T11:00:00+09:00

日時表示の末尾の"Z"は、"UTC"だと宣言しています。
SharePoint Listsから取得した日時はゆるぎなくUTCなのですが、タイムゾーンの変換は変換後の日時のタイムゾーンは明示しておらず、「日本時間で言うと9時間プラスだから~」と表示しているだけっぽい感じです。 一方、イベントの開催日時は、"startWithTimeZone"を明示して登録することができます。ただし元の日時が"Z"を付けて「僕は絶対にUTCだ」と言ってきたときには、タイムゾーンを指定してもそのまま登録されるようです。

タイムゾーンの変換とイベントの作成の両方でタイムゾーンの指定をしなきゃらないのか? ですが、UTCになっていてびっくりするのは開催者が予定を編集するときだけなので、お作法通りではありませんが、本人がわかってやっているならあまり気にしなくてもいいのかもしれません。お作法通りではありませんが。

エピローグ

私は狭い世界で暮らしているので、11時集合と言ったら誰もがお昼前に集まるものだと思っていました。ですが、距離を超越できる世界では、「日本時間の11時に集合」もしくは、「標準時の深夜2時に集合」と言わなければならないということになります。
世界中みんながUTCで生活するようにすればこんな混乱はなくなるのかもとも考えてみたのですが、やはりお昼ご飯は12時に食べたいでしょうから、甘んじて受け入れなければなりません。
みんなが小学生の時に気づいていたようなことを今更考えているような気もします。理解の間違っているところがあれば指摘いただけると嬉しいです。

今日の理解を図示したもの