如何获得上周四的包容性?

时间:2016-06-30 15:41:08

标签: bash shell date datetime dayofweek

假设今天是2016年6月30日星期四。

然后 <asp:Label ID="lblItems" runat="server" Text="SemesterCode: "></asp:Label> <asp:DropDownList ID="ddlItems" AppendDataBoundItems="true" runat="server"> <asp:ListItem Text=" -- Select -- " Value="-1"></asp:ListItem> </asp:DropDownList> date +%Y%m%d20160630date -d'last-thursday' +%Y%m%d20160623date -d'next-thursday' +%Y%m%d

但是,20160707date -d'last-wednesday' +%Y%m%d20160629date -d'next-wednesday' +%Y%m%d

如果今天,是否会有包含版本的20160706,它将返回今天的日期?

1 个答案:

答案 0 :(得分:2)

包含下周工作日内置,只需使用-d"Thursday",(无前缀),如果今天是星期四或下一个,date将返回today周四如果没有。

但是date没有包含最后,所以这里是 包含上周工作日 kludge功能:

ilast() { a=$(date -d'today' "+%A") ; b=$(date -d"$1" "+%A") ; \
         [ $a != $b ] && echo -n "last " ; echo $b ; }

测试,(也显示ilast的用法):

for d in Sun. Mon. Tue. Wed. Thu. Fri. Sat. ; do \
    echo -n $(ilast $d)" " ; \
    date -d"$(ilast $d)" "+%Y%m%d" ; \
done | column -t

输出:

last      Sunday     20160626
last      Monday     20160627
last      Tuesday    20160628
last      Wednesday  20160629
Thursday  20160630
last      Friday     20160624
last      Saturday   20160625

该功能将 $ a 设置为today的工作日, $ b 设置为 $ 1 的工作日,是一个不同的工作日,除非 $ 1 今天的工作日。因此,如果工作日 $ a $ b 不相等,(七天中有六天他们会有所不同),我们会预先“last”到工作日的长名。如果工作日 $ a $ b 相等,请不要打印“last”,因为,(七天中的一天),默认包含下一个已经做了所需的事情。