假设今天是 2016 年 6 月 30 日星期四。
那么日期+%Y%m%d
是20160630
,日期-d'last-thursday'+%Y%m%d
> 为 20160623
,date -d'next-thursday' +%Y%m%d
为 20160707
。
但是,date -d'last-wednesday' +%Y%m%d
是 20160629
,而 date -d'next-wednesday' + %Y%m%d
是 20160706
。
{next,last}-*day
是否有一个包含版本,如果今天是天,它会返回今天的日期? p>
最佳答案
包含下一个工作日是内置的,只需使用-d"Thursday"
,(无前缀),date
将返回今天
如果今天是星期四,或者下星期四如果不是。
但是 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设置为今天
的工作日,将$b设置为$1的工作日,这将是不同的工作日,除非$1是今天工作日。因此,如果工作日 $a 和 $b 不相等(七天中有六天不同),我们会在前面添加“last”> 工作日的长名称。如果工作日 $a 和 $b 相等,则不要打印 "last ",因为 (七分之一),默认的包含下一个已经完成了所需的事情。
关于bash - 如何获取上周四(含)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38127778/