UIPATH-05-02-For each遍历三种日期格式数据的两类处理方法

For each遍历三种日期格式数据的两类处理方法

0.准备数据:

我们常见的日期格式有3种: MM/dd/yyyy,yyyy/MM/dd 以及 dd/MM/yyyy,前两种最常见,后面这种不太常见,但也会有,而且最后这种不好处理。
UIPATH-05-02-For each遍历三种日期格式数据的两类处理方法_第1张图片

1. 从excel里读取日期数据时,保存为 IEnumerable类型的数据,For each里指定为Object类型:

先来看看读取A列:MM/dd/yyyy

1).期望输出 MM-dd-yyyy格式的message:
UIPATH-05-02-For each遍历三种日期格式数据的两类处理方法_第2张图片

2.)期望输出 dd-MM-yyyy格式的message:
UIPATH-05-02-For each遍历三种日期格式数据的两类处理方法_第3张图片

Note:

1)由于 item本身的类型是Object类型,不能直接用item.ToString(“yyyy-MM-dd”),需要使用DateTime.Parse()来将item.ToString转换成DateTime. DateTime.Parse(日期格式的字符串)
2)只要文件中的日期格式能被正确识别,无论输出哪种格式,都是正确的。

再来看看,读取B列:dd/MM/yyyy

UIPATH-05-02-For each遍历三种日期格式数据的两类处理方法_第4张图片
程序依然会将前两位视为MM,所以当有数据>12时,就会报错。

再来看看读取C列:

UIPATH-05-02-For each遍历三种日期格式数据的两类处理方法_第5张图片
也没有问题,也能够正确识别。

从excel里读取日期数据时,保存为 IEnumerable类型的数据,For each里指定为 System.DataTime类型:

A,B两列都读取失败了,强制类型转换错误;只有C列的 yyyy/MM/dd格式的数据才识别和转换成功。
UIPATH-05-02-For each遍历三种日期格式数据的两类处理方法_第6张图片

UIPATH-05-02-For each遍历三种日期格式数据的两类处理方法_第7张图片

Note

因为在 for each控件里指定了数据类型为 DataTime,所以,无需使用DataTime.Parse()函数,先转为DataTime然后再转为字符串的操作了。item.GetType.Name.ToString + " : " +item.ToString(“MM-dd-yyyy”)

总结:

1.处理日期格式的数据要格外小心。优先选用第一种方法。
2.在第一种方法中,注意dd/MM/yyyy类型的数据,不能被识别。
3.在第二种方法中,只有yyyy/MM/dd可以被识别。

Note:

1.我试图将电脑系统时间更改为 dd/MM/yyyy,然后重启UIPATH甚至重启电脑,依然发现第2.3条规律是正确的。
2.遇到时间序列,最好多尝试,不要想当然。

附 常见的日期操作

UIPATH-05-02-For each遍历三种日期格式数据的两类处理方法_第8张图片

1.当天日期 Now的各种操作:

now.Date.ToString:20191031
Now.ToShortDateString:10/31/2019
Now.ToShortTimeString:22:22
Now.ToString:10/31/2019 22:22:57

针对Now.ToString我们还可以这样来获取更详细的时间:
当天日期20191031:now.ToString(“yyyyMMdd”)
当前时间22:26:00:now.ToString(“hh:mm:ss”)
当前时间22:26:00.000:now.ToString(“hh:mm:ss.sss”)
当天日期2019-10-31:now.ToString(“yyyy-MM-dd”)
当天日期2019/10/31:now.ToString(“yyyy/MM/dd”)

2.表达几天或者几个月之后或之前的日期

五天后日期:now.AddDays(5).ToString(“yyyyMMdd”)
五天前日期:now.AddDays(-5).ToString(“yyyyMMdd”)
五个月后日期:now.AddMonths(5).ToString(“yyyyMMdd”)
五个月前日期:now.AddMonths(-5).ToString(“yyyyMMdd”)

3.表达本月/次月1日这样的特殊日期

对于这样特殊的日期,我们通过下面的表达式即可得到
本月1日:New datetime(now.Year,now.Month,1).ToString(“yyyyMMdd”)
次月1日:New datetime(now.Year,now.AddMonths(1).month,1).ToString(“yyyyMMdd”)

4. 上个月最后一天或者本月最后一天

上个月最后一天:获取本月第一天,然后减去一天就是上个月最后一天
New DateTime(now.Year,now.Month,1).AddDays(-1).ToString(“yyyyMMdd”)
本月最后一天:获取下个月第一天,然后减去一天就是本月最后一天
New DateTime(now.Year,now.Month,1).AddMonths(1).AddDays(-1).ToString(“yyyyMMdd”)

5. 本周一或者本周五,或者下周一

本周一:now.AddDays(1-weekday(now,vbMonday)).ToString(“yyyyMMdd”)
本周二:now.AddDays(2-weekday(now,vbMonday)).ToString(“yyyyMMdd”)
本周三:now.AddDays(3-weekday(now,vbMonday)).ToString(“yyyyMMdd”)
本周四:now.AddDays(4-weekday(now,vbMonday)).ToString(“yyyyMMdd”)
本周五:now.AddDays(5-weekday(now,vbMonday)).ToString(“yyyyMMdd”)
下周一:now.AddDays(8-weekday(now,vbMonday)).ToString(“yyyyMMdd”)

6. 判断今天为星期几

计算今天是星期几:weekday(now,vbMonday).ToString-à1,2,3,4,5,6,7
或者是now.DayOfWeek.ToString-àMonday,Tuesday,Wednesday,Thrusday,Friday,Saturday,Sunday

你可能感兴趣的:(Uipath)