2017-09-02 94 views
1
給定日期

獲得的最後一個星期日日期作爲輸出從某一特定日期(不是當前的日期)作爲輸入如何獲得最後一個星期天日期從UNIX

例輸入:2017年8月30日(%間% D-%Y)

輸出應該是最後一個星期日:2017年8月27日

===

下面所有的命令都使用當前日期作爲參考。但我想給的參考日期作爲獲取最後一個星期日的輸入。請幫助我執行命令。

日期+%間%D-%Y -D 「2017年9月10日 - 7日」

日期+%間%D-%Y -D 「最後太陽報」

+0

輸入日期是否總是以這種格式'%m-%d-%Y'在你身邊? – RomanPerekhrest

回答

0

我希望這下面的解決方案可以幫助你:

export day=08-30-2017 
date -d "$day -$(date -d $day +%w) days" 

這將始終打印給定日期(或日期本身)之前的星期日。

date -d "$day -$(date -d $day +%u) days" 

這將始終打印給定日期之前的星期日(而不是日期本身)。

+0

要獲得給定日期的最後一個星期一?應該改變什麼?就像我想要最後一個星期一,星期一,星期二,星期三..直到日期作爲input.Please幫助我這個 –

+0

@DivyaS得到星期一:'date -d「$ day - $(date -d $ day +%u )天+ 1天「,並繼續爲星期二和星期三增加日子。嘗試這個。 –

+0

上次編輯已恢復。你爲什麼複製/粘貼@RomanPerekhrest的答案? – Toto

1

如果你對付一個固定的日期格式%m-%d-%Y,應該轉化爲%Y-%m-%d格式由date函數進行處理:

d='08-30-2017' 
d=${d##*-}-${d%-*} 
lst_sunday=$(date -d "$d -$(date -d $d +%u) days" +"%m-%d-%Y") 

echo $lst_sunday 
08-27-2017 

+%u - 解釋格式specificator,一週中的一天(1。 0.7); 1是星期一

+0

要獲得給定日期的最後一個星期一?應該改變什麼?就像我想要的最後一個星期一,星期一,星期二,星期三..直到給出的日期作爲input.Please幫助我這一點。 –

+0

非常感謝你 –

+0

@DivyaS,不客氣 – RomanPerekhrest

0

非常簡單的方法 -

首先從給定日期計算dayofweek。它將是1-7。對於星期一,它是1等...星期六6和星期日7.

然後減去指定日期的星期幾。那是你最後的星期天。

$ givenDate="08-30-2017" 
$ dayofweek=$(date -j -f '%m-%d-%Y' $givenDate +'%u') 
$ date -j -f '%m-%d-%Y' -v-${dayofweek}d $givenDate +%m-%d-%Y 
08-27-2017 
相關問題