この記事は、Power Automate Advent Calendar 2023 12月8日に参加しているものです。
日時の取り扱いについては先人の詳しくわかりやすい記事やスライドが沢山あります。それらを見て聞いてすっかり知ったつもりになっていましたが、さて自分でフローを作ってみるとよくわかってなかったので整理してみたよというお話です。
前置 作ったフローと結果
当番を各自のスケジュールに登録するために、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時に食べたいでしょうから、甘んじて受け入れなければなりません。
みんなが小学生の時に気づいていたようなことを今更考えているような気もします。理解の間違っているところがあれば指摘いただけると嬉しいです。