
以下旧記事ー--
Power AutomateにはDateDiff関数が用意されておらず、たまに困ることがある。
前回の記事でDateDiff関数の代わりになる方法を探してみたけど、経過日数を求める方法だけ微妙にうまくいかなかった。
そこで今回DateDiff関数の代わりに経過日数を算出する関数(子フロー)を作ってみた。
参考にしたページ

こちらのサイトではグレゴリウス暦1年1月1日を基準にして経過日数を求める計算式をとても丁寧に解説してくださっています。
その計算式を参考にさせて頂いて「開始日」と「終了日」の1/1/1からの経過日数を計算、それらの差分を求めればDateDiff関数の代わりになるだろう!的な試み。
子フローの実装
まずは経過日数を求める子フローを実装。

各アクションについて簡単に解説していく。
トリガー

変数定義
今回使用する変数は7つ。


計算部分


dy = 365 * ( y – 1 );
mul(365, sub(variables('year'), 1))
c = y / 100;
div(variables('year'), 100)
dl = (y / 4) – c + (c / 4);
add(sub(div(variables('year'), 4), variables('c')),div(variables('c'),4))
dm = (m * 979 – 1033) / 32;
div(sub(mul(variables('month'),979),1033),32)
return dy + dl + dm + d – 1;
sub(add(add(add(variables('dy'),variables('dl')),variables('dm')),variables('day')),1)
これで経過日数を求める子フローは完成!!
検証

翌日


昨日


翌月


うるう年


ということで、どうしてもDateDiff関数が必要になったら作っちゃうこともできるよ、というお話しでした。
一回作れば使いまわしもできるしね~。
こちらの計算式を編み出していただいた方に多大な感謝!
おまけ:自分の年齢を日付にしてみる


けっこうな日数生きてるな~と再確認w
人生って長いw

コメント