ふらりのメモ書き

Microsoft 365 , Power Platform らへん

【Power Automate】イベントまであと何日?を取得してみた話

イベント開始日までの日数を取得してみた際のメモ書きです。

イベント開始までの日数を取得したい

イベント開始日と今日の差分を取得すれば、イベント開始までの日数が取得できます。ただし、タイムスタンプはテキストなので差分が出せません。そのため、シリアル値に変換して差分を求める必要があります。

ざっくり、下記の流れになります。

今回は、最終的に下記のような式になります。

div(sub(ticks(startOfDay(convertFromUtc(variables('開催日'),'Tokyo Standard Time'))),ticks(startOfDay(convertFromUtc(utcNow(),'Tokyo Standard Time')))),864000000000)

それでは、1個ずつ確認していきます。

あと何日?

イベント情報

検証用に架空のイベントを定義します。
日本時間で2022年10月1日 20時からのイベントとします。このイベント情報を取得すると、UTCで日時が取得できます。

変数で文字列を定義して、UTCで日時を入力します。

名前
「文字列」

2022-10-01T11:00:00Z

現在時刻の取得

現在の日時は utcNow 関数で取得できます。

utcNow()

基準を合わせる

UTC を日本時間に変換します。

今回はUTCでデータが取得しているので、UTCからタイムゾーンを変換できる convertFromUtc 関数を利用してみます。

イベント開催日時
イベントの開催時間の情報を変数に入れておいたので、最初に作成しておいた変数を指定しています。

convertFromUtc(variables('開催日'),'Tokyo Standard Time')

現在日時

convertFromUtc(utcNow(),'Tokyo Standard Time')

日本標準時でのタイムスタンプが取得できました。

日の開始日時を取得する

startOfDay 関数を利用して、日の開始日時を取得します。

イベント開催日時
イベントの開催時間の情報を変数に入れておいたので、最初に作成しておいた変数を指定しています。

startOfDay(convertFromUtc(variables('開催日'),'Tokyo Standard Time'))

実行結果

現在日時

startOfDay(convertFromUtc(utcNow(),'Tokyo Standard Time'))

実行結果

数値に変換する

ticks 関数を利用して、計算できるように数値に変換します。

イベント開催日時

ticks(startOfDay(convertFromUtc(variables('開催日'),'Tokyo Standard Time')))

実行結果

現在日時

ticks(startOfDay(convertFromUtc(utcNow(),'Tokyo Standard Time')))

実行結果

引く

sub 関数で差分を取得します。
ticks 関数の1カウントは100ナノ秒なので「25920000000000」と大きな結果になります。

sub(ticks(startOfDay(convertFromUtc(variables('開催日'),'Tokyo Standard Time'))),ticks(startOfDay(convertFromUtc(utcNow(),'Tokyo Standard Time'))))

実行結果

割る

1日を100ナノ秒の単位に合わせます。

1日は24時間。 1時間は60分で、秒だと3,600秒です。 1日は3,600 × 24 = 86,400秒

ticksの1カウントは100ナノ秒なので、1秒は10,000,000 ナノ秒になります。

従って、1日は 86,400 × 10,000,000 =864,000,000,000 になります。

あとは、単純な割り算なので div 関数を利用します。

div(sub(ticks(startOfDay(convertFromUtc(variables('開催日'),'Tokyo Standard Time'))),ticks(startOfDay(convertFromUtc(utcNow(),'Tokyo Standard Time')))),864000000000)

実行結果
2022/9/1に実行しているので、2022/10/1のイベントまであと30日ですね。

さいごに

イベント開催のリマインドを出す際に「あと何日で開催」のような情報もあるといいなぁと思って取得してみました。
connpass API と組み合わせリマインドするとよいかもしれません。

flali.hatenablog.com

flali.hatenablog.com

flali.hatenablog.com

flali.hatenablog.com