使用Linux date命令获取下周的星期二和星期三

使用Linux date命令获取下周的星期二和星期三,linux,unix,Linux,Unix,在Linux shell中,您可以执行以下操作: date -d "next Tuesday" 下星期二去 我的问题是: 我想订下星期二。所以,如果我现在在周一,我希望它能提前7天到下周,然后评估“下周二”。有没有一种方法可以链接日期评估 更详细地说,如果我在星期三,那么下周的星期二就只有6天了日期比你想象的要聪明 ~: date -d "next tuesday" Tue Feb 2 00:00:00 GMT 2016 ~: date -d "1 week next tuesday" Tu

在Linux shell中,您可以执行以下操作:

date -d "next Tuesday"
下星期二去

我的问题是: 我想订下星期二。所以,如果我现在在周一,我希望它能提前7天到下周,然后评估“下周二”。有没有一种方法可以链接日期评估


更详细地说,如果我在星期三,那么下周的星期二就只有6天了

日期
比你想象的要聪明

~: date -d "next tuesday"
Tue Feb  2 00:00:00 GMT 2016
~: date -d "1 week next tuesday"
Tue Feb  9 00:00:00 GMT 2016
~: 
如果你想得到下周的星期二,你可以找到下周的开始,然后加上一天

~: date -d "1 day next monday"
Tue Feb  2 00:00:00 GMT 2016
如果您希望它稍微清晰,可以使用

~: date -d "next Monday + 1 day"
Tue Feb  2 00:00:00 GMT 2016
根据查尔斯·达菲的评论,在我的机器上可能值得注意

~: date --version #on RHEL6
date (GNU coreutils) 8.4
<license stuff (GPLv3)>
~:日期——RHEL6上的版本
日期(GNU coreutils)8.4

唯一可靠的方法是首先获得下一个“周初日”(可能因地区而异;为此,我假设它是星期日),然后请求未来的0-6天,其中0到6分别代表星期日到星期六

$ bow=$(date -d "next Sunday")
$ date -d "$bow + 0 days"

将其添加为问题的编辑。
bash
没有
date
命令。当你运行
date
时,它是一个独立的操作系统组件,而不是bash的一部分。这很重要,因为你在
date
中所能做的事情在不同的操作系统之间是不同的,即使它们都在运行bash:例如,MacOS有BSD-date,它的功能远远低于Linux上常见的GNU版本;这里的答案都取决于GNUdate(完全不依赖于bash;它们可以与ksh或ash配合使用,或者直接从Python或Java或C调用
date
,而不使用shell)。为什么时间不同?@MadPhysicast我想它是把
a
作为时间格式来阅读的——解决了这个问题,你需要提前知道今天是星期二之前还是之后。@chepner,不确定这是否是OP的目的,但如果你想的话,你可以做
日期-d“下周一1天”
确保您能在下周二week@chepner:不,它不是“在(今天+1天)之后获得下一个星期一”,因为那将是一个星期一。