以前この記事でPower AutomateにはDateDiff機能が存在しないと紹介したけれど、いつの間にかしれっと実装されていたので実際に使ってみた。
Power AutomateにDateDiffが実装されている!

Power AppsのDateDiffとの違いは戻り値が期間を表す「文字列」として戻ってくることくらいかと。
実際使ってみた
ということで、早速色々使ってみた!

変数「diff」に入れるdateDifferenceの式はこんな感じ。
dateDifference(variables('start'),variables('end'))
翌日

昨日

翌月


翌年

日本時間の今日と差分をとりたいとき

※式はこんな感じ。
dateDifference(body('タイム_ゾーンの変換'),variables('end'))

dateDifference(addHours(utcNow(),9,'yyyy/MM/dd'),variables('end'))
※式を見てわかるとおり、日付の仕切り記号は「/」でも「-」でもどちらでもいけるっぽい。
日付の差分のみを整数型で取得したいとき
返ってくる日付のみを整数型に変換して計算に使いたい場合は、こんな感じでifとint、splitを使用。
※開始と終了の差分が1日に満たない場合、dateDifferenceの結果は「hh:mm:ss」となるため、ifを利用。
if(contains(dateDifference(【開始】,【終了】), '.'),int(split(dateDifference(【開始】,【終了】), '.')[0]), 0)


ということで日付の差分を求める関数「dateDifference」が実装されて、今までみたいにtick関数を使って差分を求めたり、オリジナルで関数を作らなくてよくなったので日付計算がとても便利になった!


コメント
式を参考にさせてもらいました。
ありがとうございました。
int(split(dateDifference(start,end),’.’)[0])
上記の式だとstartとendの日付けが同じ場合に、intに変換できないエラーが発生しました。
原因は、日付けが同じ場合のdateDifferenceの値が「0.00:00:00」ではなく「00:00:00」になり、
splitで分割できずに出力される値が00:00:00となったためでした。
「作成」アクションでsplit(dateDifference(start,end),’.’)[0]を計算してある前提ですが、
以下のように分岐させてエラー回避しました。
if(contains(outputs(‘作成’), ’00’), 0, int(outputs(‘作成’)))
コメントありがとうございます!
頂きましたご指摘を基に記事を修正しました。