2014-09-26 115 views
1

是否有任何內置函數可以使用bash shell腳本從給定日期獲取下個星期日(下週一,週二等)? 例如,2014年9月1日之後的第一個星期天是什麼時候?我期待2014年9月7日。在給定日期(bash)後獲取下一個星期日

我已經在谷歌搜索答案,但只找到此功能:

date "+%Y%m%d" -d Sun 

這是旁邊今天是星期天后得到的。

回答

1

我怕date不能直接做。但是你可以用括號展開,從他們那裏得到的日期爲所有隨後的7日內,選擇星期日:

echo '1-Sep-2014\ +'{1..7}'\ days' | xargs -n1 date -d | grep Sun 
+0

這很好。請注意,如果您使用的是unix系統,請確保您有GNU日期。 'brew install coreutils'的自制解決方案將導致'gdate'調用GNU date。 – PhysicalChemist 2014-09-26 18:50:08

+0

很棒的回答,@choroba :)。順便說一下,是否可以將日期(2014年9月1日)和日期(日)進行參數化。我試過這段代碼,但返回錯誤:'echo'$ myDate \ +'{1..7}'\ days'| xargs -n1 date -d | grep $ myDay' – nurandi 2014-09-29 01:17:57

+0

我把第一個報價放在錯誤的位置。它現在可以工作:'echo $ {myDate}'\ +'{1..7}'\ days'| xargs -n1 date -d | grep $ myDay' – nurandi 2014-09-29 01:29:06

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 

請注意,參數驗證沒有完成,我只是展示瞭如何計算日期。

相關問題