總網頁瀏覽量

星期四, 11月 22, 2018

UiPath專論 - Date Format

最近一直跟Date這個東西過意不去,所以查了一堆論壇資料、網站等,小小整理以下心得(其實是自己要做筆記以供以後做為參考)

前情提要:我要用Filter Data Table(UiPath.Core.Activities.FilterDataTable)把指定日期找出來extract出來,結果呢...不能用0.0

所以就產生這篇對Date Format的小小研究!


可能谷歌關鍵字搜尋:
  • replace excel datetime to string uipath
  • convert to excel date uipath
  • string was not recognized as a valid datetime. uipath
  • change format in excel uipath
  • count between two dates uipath


Let's get started!

常常會想要知道現在時間是什麼,這個時候要用Assign(System.Activities.Statements.Assign)功能。


據說UiPath的DateTime是從VB.Net產生而來(https://docs.microsoft.com/zh-tw/dotnet/api/system.datetime),傳統的"yyyy/MM/dd HH:mm:ss"的格式也是依照此規則。

基礎題

最常大家想要用的是"現在的時間",通常會用(其一):
System.DateTime.Now
System.DateTime.Today

注意:這(指A)通常是個DateTime的變數,如果沒有找到可以在
Variables>Variable Type>Browse for Types>打入"System.DateTime"找到


當然很多人比較喜歡把它換成String,就可以利用.ToString
System.DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")

註:轉換的格式都可以換的。





進階題

那有人就會問了,如果是要做"今日日期時間的加減",可以運用.AddDays()
System.DateTime.Now.AddDays("加減天數").ToString("yyyy/MM/dd hh:mm:ss")

舉例來說:

要算前天(今天-2天)日期時間:System.DateTime.Now.AddDays(-2)
要算3周(7*3)後的日期時間:System.DateTime.Now.AddDays(21)

註:即使最後格式("yyyy/MM/dd:)沒有包含小時分鐘秒數,系統都會把它算進去!!

這時有人就抱怨了,如果是要做"指定日期時間的加減",怎麼辦?
過程會多一個步驟
  1. 先設S = "指定的日期"(String Type)
  2. 再用DateTime.Parse(), A = "轉換的日期"(DateTime Type)
    DateTime.ParseExact("指定日期字串", "dd-MMM-yyyy",System.Globalization.CultureInfo.InvariantCulture)
  3. 最後再把.AddDays()放入


進階題+1

大家做完日期時間的加減乘除,會發現,會有譬如說12:31:22(12點31分22秒)這種零碎的數字,但如果不要有其他時間,只要00:00:00的時間:
.AddHours(-DateTime.Now.Hour).AddMinutes(-DateTime.Now.Minute).AddSeconds(-DateTime.Now.Second) 把它剪掉即可

以下:

格式1
String.Format("{0:yyyy/MM/dd HH:mm:ss}", DateTime.Now.AddDays("加減天數").AddHours(-DateTime.Now.Hour).AddMinutes(-DateTime.Now.Minute).AddSeconds(-DateTime.Now.Second))
或是這個格式2
DateTime.Now.AddDays("加減天數").AddHours(-DateTime.Now.Hour).AddMinutes(-DateTime.Now.Minute).AddSeconds(-DateTime.Now.Second).ToString(“MM/dd/yyyy HH:mm:ss”)

註:yyyy/MM/dd hh:mm:ss可以改成自己要的格式
註:M是代表Month,一定要大寫! MMM會出現英文
註:HH大寫是24小時表示法、hh小寫是12小時表示法

延伸:可以加減Day,也可以加減Month!!





進階題+2

除了日期時間的加減,另外還有"兩個日期之間的差異"!!這時運用的是DateDiff()

DateDiff function:計算時間差異
DateDiff(DateInterval(時間間距), "第一個日期","第二個日期")

另外一種方法(比較不推薦)
"第二個日期".Subtract("第一個日期")

註:"第一個日期"、"第二個日期"都是DateTime Type

以下舉例:

要把今日日期與指定日期算時間差異
DateDiff(DateInterval.Day,DateTime.ParseExact("指定日期字串", "dd-MMM-yyyy", System.Globalization.CultureInfo.InvariantCulture),DateTime.now())

註:這個是要先把"指定日期字串"轉換成一定格式,在與當日日期做比較

更新版(實際數字):
DateDiff(DateInterval.Day,DateTime.ParseExact("01-01-1990", "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture),DateTime.Now.AddDays(0))


科普點:

Excel本身有兩個Start Date分別是The 1900 date system和The 1904 date system。而如果把日期轉換為通用格式,可以得到一個Serial number,計算那個日期相對於Start Date有多少天。





以上應該夠用了,如果有其他問題可以再跟我討論哈哈!!
feat.這次沒有講到Filter DataTable的部分...






參考文獻:







SHARE AND LIKE IF IT HELPS

沒有留言:

張貼留言

Related Posts Plugin for WordPress, Blogger...