上次写过一篇基本的日期表达式,如20190707,2019-07-07,2019/07/07,也写了基本日期运算,如在今天的基础上增加/减少几天或几个月。但面对实务流程,这些远不能满足需求,比如下载报表时需要下载上周的报表,或上月的报表,通常需要几种日期表达式:
1. 判断今天为星期几
2. 本周一
3. 本周五
4. 本月最后一天
5. 次月第一天
等等类似需求。首先我们来看如何判断星期几,在UiPath中可以用“weekday”,比如weekday(today,vbMonday),意思是以周一为起算日,计算今天是星期几,如下:
当然weekday(now, vbMonday)也是同样结果。
理解了以上内容,接下来让我们看如何通过计算得出星期一或星期五对应的日期。
看出来了吧,如果想要计算本周一的日期,只要用now.AddDays(1-weekday(now,vbMonday)).ToString("yyyyMMdd")就可以了,当然Today.AddDays(1-weekday(today,vbMonday)).ToString("yyyyMMdd")也是同样结果。
其他可以以此类推,如本周星期二为now.AddDays(2-weekday(now,vbMonday)).ToString("yyyyMMdd"),本周三为now.AddDays(3-weekday(now,vbMonday)).ToString("yyyyMMdd")等等,下周一为now.AddDays(8-weekday(now,vbMonday)).ToString("yyyyMMdd")
理解了这部分以后,要表达星期几这种问题就难不倒你啦。
接下来,我们再看如何表达本月第一天或本月最后一天这样的日期。在UiPath中有一个功能是New DateTime(),比如new datetime(now.Year, now.Month,1).ToString("yyyyMMdd")这样的表达式就可以得到本月1号,即“20190701”。本月最后一天就没办法用这种直接表达的方式了,因为有的月份最后一天是30号或31号,2月最后一天还有可能是28号或29号。这就需要先计算次月1日,然后减1天来计算了,如New DateTime(now.Year,now.Month,1).AddMonths(1).AddDays(-1).ToString("yyyyMMdd")。