linux - 如何让 bash 日期脚本返回相对于非当前时间的星期几?

标签 linux bash date

使用 bash date,我可以让它返回相对于当前时间的星期几。

date --d='last Sunday' #Returns date of the Sunday before today

我还可以让它返回相对于其他日期的一天

date --d='02/1/2012 -2 days' #Returns date two days before Feb. 1, 2012

但是我怎样才能让它返回相对于某个非当前时间的星期几呢?我想做的是:

date --d='Sunday before 02/1/2012' #Doesn't work! I want Sunday before Feb. 1

如果可能的话,我什至希望能够链接字符串,以便我可以引用新日期的相对日期:

# Should return 2 days before the Sunday before Feb. 1, 2012
date --d='Sunday before 02/1/2012 - 2 days'

虽然这种链接并不那么重要。 bash date 是否有某种方法可以根据一周中的相对日期返回一天?

最佳答案

您可以使用一点天数算法:

base="02/1/2012"
feb1_dayofweek=$( date -d $base +%w )
target_dayofweek=0   # sunday
date -d "$base - $(( (7 + feb1_dayofweek - target_dayofweek) % 7 )) days"

结果:

Sun Jan 29 00:00:00 EST 2012

关于linux - 如何让 bash 日期脚本返回相对于非当前时间的星期几?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9203747/

相关文章:

php - 动态安排提醒电子邮件的最佳方式?有什么比 cron 更好的吗?

bash - 执行嵌入在使用 cat 读取的脚本中的 shell 函数

JavaScript 日期到时间戳计算不适用于任何一个月的 8 号和 9 号

python - 如何在Linux文件中找到匹配的句子并编辑其中的一部分

linux - tselect 在 vi​​m+cscope 中不起作用

linux - libpcap - 从所有接口(interface)捕获数据包

bash - 崩溃时自动重启 SH 脚本?

bash - 如何在 bash 中从文本文件绘制图表?

bash - 根据月份名称创建目录

PHP/MySQL : Group items by month