初學者有時候無法順利執行 RPA 流程,可能只是因為未能留意系統的預設情況,因此 RPAI 數位優化器在中,先簡單說明基本的時間格式與設定方法,協助初學者進行除錯,而進階篇則將透過實際操作,讓已經熟悉 UiPath 的學習者能靈活應用、加深印象!
以下介紹我們在設計流程時較常使用的方法,包括:
1. 字串型態(String)轉換成時間型態(DateTime)
2. 如何在流程控制(Flow control)中運用時間
3. 時間差的使用
在開始閱讀正文之前,也別忘了先追蹤我們的 與 !
1. 字串型態(String)轉換成時間型態(DateTime)
當我們的任務是將文件(如Excel活頁簿)中的時間讀入UiPath時,會需要將型態(variable type)從String轉換成DateTime,以方便後續使用,這時就需要使用ParseExact屬性將輸入的資料變更型態,而ParseExact屬性也可用來擷取出我們需要的日期與時間。
點選Assign方框中的「System.Datetime」時,我們可以輸入以下語法:
System.DateTime.ParseExact(input(變數),input format(輸入形式),
System.Globalization.CultureInfo.CurrentCulture)
舉例來說 Base = "03/15/2022" 【在此為String型態,Base是一個變數】
如果還想學習更多 UiPath 功能、實作案例並了解最新自動化趨勢,
歡迎加入「零基礎快速學習 RPA-利用 UiPath 建構自動化機器人」線上課程!課程優惠只到 2024 年 2 月 5 日,快點擊連結立即了解:
1-1. 將資料從String型態轉換成DateTime型態:有兩種屬性可以使用 (1)ParseExact屬性
System.DateTime.ParseExact(Base,"MM/dd/yyyy", System.Globalization.CultureInfo.CurrentCulture)
(2)Parse屬性
System.DateTime.Parse(Base,"MM/dd/yyyy", System.Globalization.CultureInfo.CurrentCulture)
順帶一提,Parse屬性只能將時間從String型態改成DateTime,使用上較為侷限,故在此不多做討論。
1-2. 轉換日期的顯示格式:可使用ParseExact屬性 System.DateTime.ParseExact(Base,"MM/dd/yyyy", System.Globalization.CultureInfo.CurrentCulture).ToString("yyyy.MM.dd"):2022.03.15
此時的2022.03.15仍然是String型態。
1-3. 擷取特定日期:可使用ParseExact屬性 System.DateTime.ParseExact(Base,"MM/dd/yyyy", System.Globalization.CultureInfo.CurrentCulture).ToString("MM"):03
此時的03是String型態,而不是int32的數字型態。
2. 如何在流程控制中運用時間
Case: 筆者曾經做過一個自動提醒信件的RPA機器人,活頁簿中有許多病人於不同時間就診的資訊,且這些病人須按照醫囑於指定時間回診,醫院希望在回診前一週自動寄信提醒,因此機器人可每天協助確認活頁簿中「指定回診日期前一週」與當日日期是否一致,相同時就會寄出提醒信。
在流程控制中,我們會需要透過比較,來確認兩者時間的關係,不過時間早、晚與數字的大、小概念並不完全相同,因此使用以下範例進行說明,並分享兩種比較方法:
2-1. 套用CompareTo屬性:使用上相當直覺,只需進行結果解讀 輸入:DateTime.Now.CompareTo(基準點時間),會出現>0、=0、<0三種結果。
● 當小於0的時候,表示現在時間比基準點時間早(圖中菱形)
● 當等於0的時候,表示現在時間等於基準點時間(圖中圓形)
● 當大於0的時候,表示現在時間比基準點時間晚(圖中三角形)
2-2. 設計一個小型Sequence: 流程示意圖(if-then-else)來展示時間點比較的結果。a, b, c, d分別代表四個「時間點」,而非「時間間隔」。因此,if (a>b)的概念是「時間點a是否比時間點b晚」。
如果 a > b 為真,表示 a 的日期是比較晚
如果 c < d 為真,表示 d 的日期是比較晚
比較時間差的情境時,兩種方法都相當實用,就筆者操作經驗來說,Sequence在執行上有更多變化與彈性,例如判斷時間早於某個日期時執行動作。不過,若遇到跨年度問題,則須將年份額外擷取出來討論,流程控制會變得太過複雜,此時使用CompareTo屬性時則會比較容易。特別留意,上述兩種方式仍須先將格式轉換成DateTime型態,才可正常運作哦!
如何計算時間間隔?
Substract屬性顧名思義有相減的概念,可用於計算兩個時間的間隔,以下範例的Date1和Date2型態都是DateTime:
語法:Date1.Substract(Date2)
(1)Date1和Date2的型態都是DateTime
(2)當Date1時間早於Date2的時候,結果會顯示負數
(3)當Date1時間晚於Date2的時候,結果會顯示正數
(4)結果數字的單位有可能是天、小時、分鐘、秒數,視使用者想要比較的時間而定
如果希望顯示結果的單位為小時,我們可使用以下語法:
語法:Date1.Subtract(Date2).Hours (也可替換成Days、Minutes、Seconds)
Date1.Subtract(Date2).Hours和Date1.Subtract(Date2).TotalHours的差別:
.Hours只顯示差距時間的小時部分,分鐘數的差不計入。
.TotalHours則會將相差時間都轉換成小時顯示,包括分鐘數的差。
同理適用於 Days/TotalDays、Minutes/TotalMinutes、Seconds/TotalSeconds。
總結
本篇分享為 RPAI 數位優化器自行嘗試過的設定方法,也參考了 UiPath Forum 上的討論文章,初學者不妨可先從以上方法處理流程設計的時間問題,而越來越熟悉 UiPath 工具後,也可試著以不同方式完成相同任務,靈活運用設計流程!
如果你/妳喜歡這篇文章,歡迎點點愛心或留言,讓我們相互交流和成長!
這次的分享到此告一段落,想了解更多 RPA + AI 與數位轉型的最新趨勢與觀點、RPA 軟體功能介紹及實務應用案例,也歡迎追蹤 RPAI 數位優化器的社群和我們交流互動,我們下次見!
🚀 Instagram:RPAI 數位優化器
🚀 臉書粉絲專頁:RPAI 數位優化器
🚀 YouTube 頻道:RPAI 數位優化器