Power Automate 是微軟為了讓非工程師也能自行開發簡易流程所推出的服務。
可是該服務畢竟不是編寫程式碼, 我們在設計流程時無法快速編寫程式碼進行我們想要邏輯計算。
若我們需要進行計算, 我們還需要使用 Function 的方式進行計算, 但是不是每個計算方法都支援, 如日期相減。
日期相減的情景很多時候會出現在資料上的判斷處理, 如資料是否已逾期等。
內容將提供我所使用的日期相減方式並且進行記錄以便完後遺忘。
概述
Power Automate 是微軟為了讓非工程師也能自行開發簡易流程所推出的服務。
可是該服務畢竟不是編寫程式碼, 我們在設計流程時無法快速編寫程式碼進行我們想要邏輯計算。
若我們需要進行計算, 我們還需要使用 Function 的方式進行計算, 但是不是每個計算方法都支援, 如日期相減。
日期相減的情景很多時候會出現在資料上的判斷處理, 如資料是否已逾期等。
以下內容將提供我所使用的日期相減方式並且進行記錄以便完後遺忘。
內容
首先, 以下是我測試日期相減時使用的模組
以上流程中, 我們主要使用到的模組為 Variable - Initialize variable, 主要是初始化變數。
提醒: 若在 Condition - Apply to each 內有需要使用到 Variable 進行計算, 流程現在在進行 Condition - Apply to each 前事先初始化變數。
流程內的 Trigger 是手動點擊的方式進行 Trigger。 若有需要其他 Trigger 方式也可以使用。
而在實務中, 我們不需要使用到 Data Operation - Compose 方式。
在該流程中, 我使用到該模組的原因為在我習慣在進行設計時, 我會使用 Data Operation - Compose 確認計算後的變數是否為我所需, 並且在確認流程正確性後再進行刪除。
以下開始我們的例子:
首先, 我們可以先初始化我們的第一個變數 Date1:
Function 內的語法為:
ticks(formatDateTime(utcNow(), 'yyyy-MM-dd'))
使用 Integer 的原因為目前 Power Automate 不支援 Datetime 的變數, 故我們只能使用 string 或者將日期時間轉成 ticks (電腦計時的毫秒數單位)。
因為我們需要計算, 故我們使用 Ticks 以方便我們進行計算。
而後續我們將 Function 進行拆解, 內容如下:
utcNow() : 主要是取得目前 UTC + 0 的時間。 若需要台北時區(UTC + 8), 可以使用 convertFromUtc(utcNow(), 'Taipei Standard Time')
formatDateTime() : 主要是將目前日期時間進行格式化, 這裡我使用的是 'yyyy-MM-dd', 完整的年月日
ticks() : 主要是將目前日期轉為 Ticks 毫秒
計算後我們將取得以下結果:
之後, 我們來產出我們想要計算的日期, 如下:
Function 內的語法為:
ticks(formatDateTime('2022-04-09'))
這裡我們直接使用 formatDateTime() 提供一個日期, 而得到的結果如下:
初始化所需變數值後, 我們即可進行計算:
Function 內的語法為:
sub(variables('Date1'),variables('Date2'))
語法內容的 sub() 為相減
提醒: 需要相減的值可以直接點擊 Dynamic content 後選擇所需要的變數。 在選擇變數後語法內將自動補上相對變數名稱。 這樣 Function 在執行時, Function 將會自行帶入變數值。
相減後,只要我們再除以 864000000000 (一天的毫秒)即可取得日期相減的結果。 如下內容:
Function 的語法如下:
div(variables('Sub'),864000000000)
使用 div() 除以一天總毫秒的最終結果:
以上為了方便每段邏輯進行確認, 故我每次初始化都僅計算一個簡單邏輯, 其實我們還可以直接進行合併 Functions。
合併後的語法為:
div(sub(variables('Date1'),variables('Date2')),864000000000)
該語法將使我們可以節省下一個模組以便更簡略。
以上為我目前所使用的日期相減計算方式, 希望對需要的人有幫助
謝謝
參考資料
- 整理幾個 Azure Logic Apps 與 Power Automate 會用到的日期函式 - https://blog.miniasp.com/post/2021/07/04/Common-Date-functions-in-expressions-for-Azure-Logic-Apps-and-Power-Automate
- How to substract two datetime objects in Power Automate - https://debajmecrm.com/how-to-substract-two-datetime-objects-in-power-automate/