bash - 如何获取上周四(含)?

标签 bash shell date datetime dayofweek

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

那么日期+%Y%m%d20160630日期-d'last-thursday'+%Y%m%d > 为 20160623date -d'next-thursday' +%Y%m%d20160707

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

{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/

相关文章:

linux - 编写一个函数来用硬链接(hard link)替换重复文件

bash - 如何在称为条件的shell函数中可靠地处理错误?

bash - 你如何在 Bash 中回显 4 位 Unicode 字符?

linux - 使用单行从 ps 命令终止进程

javascript - 如何计算JavaScript中两个日期之间的天数

linux - ssh到另一台主机,运行涉及其他脚本的脚本,如何仅杀死其他脚本?

bash - Shell-Script Python 调用失败并出现语法错误

shell - 让 vim 将当前文件路径传递给我的 shell

java - 日历日期时区问题

php - 在放入数据库之前在php中设置日期