如何让 bash 日期脚本返回相对于非当前时间的一周中的某一天?

2024-04-16

使用 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"

result:

Sun Jan 29 00:00:00 EST 2012
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让 bash 日期脚本返回相对于非当前时间的一周中的某一天? 的相关文章

随机推荐