是否有任何内置函数可以使用bash shell脚本从给定日期获取下周日(下周一,周二等)? 例如,2014年9月1日之后的第一个星期日是什么时候?我期待2014年9月7日。
我在谷歌搜索了答案,但只发现了这个功能:
date "+%Y%m%d" -d Sun
这是今天下个星期天之后。
答案 0 :(得分:2)
我担心date
不能直接这样做。但您可以使用大括号扩展来获取接下来7天的所有日期,并从中选择星期日:
echo '1-Sep-2014\ +'{1..7}'\ days' | xargs -n1 date -d | grep Sun
答案 1 :(得分:1)
您可以使用这个小脚本:
#!/bin/bash
w=$(date -d"$1" +%w)
diff=$(( (7-$w)%7 ))
date -d"+$diff day $1" +%F
保存为sun.sh
然后:
kent$ ./sun.sh 01-Sep-2014
2014-09-07
kent$ ./sun.sh 31-Aug-2014
2014-08-31
kent$ ./sun.sh 3-Sep-2014
2014-09-07
kent$ ./sun.sh 23-Sep-2014
2014-09-28
请注意,参数验证没有完成,我只是展示了如何计算日期。
答案 2 :(得分:0)
您的概念是正确的,只需提供所需的日期作为-d
选项的参数即可。
date "+%Y%m%d" -d "2014-09-07 Sun"
此解决方案比其他解决方案更短,更容易。
脚本中的内容相同
$ cat sun.sh
#!/bin/bash
date "+%Y%m%d" -d "$1 Sun"
$ ./sun.sh 7-Sep-2014
20140907