如何获得上周四,包括周四



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

date +%Y%m%d20160630date -d'last-thursday' +%Y%m%d20160623,并且date -d'next-thursday' +%Y%m%d20160707

然而,date -d'last-wednesday' +%Y%m%d20160629,而date -d'next-wednesday' +%Y%m%d20160706

如果今天是,是否有包含{next,last}-*day版本会返回今天的日期?

Inclusive next week是内置的,只需使用-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">,因为(七天中的一天(,默认的(包括下一天(已经完成了所需的操作。

相关内容

  • 没有找到相关文章

最新更新