獲得的最後一個星期日日期作爲輸出從某一特定日期(不是當前的日期)作爲輸入如何獲得最後一個星期天日期從UNIX
例輸入:2017年8月30日(%間% D-%Y)
輸出應該是最後一個星期日:2017年8月27日
===
下面所有的命令都使用當前日期作爲參考。但我想給的參考日期作爲獲取最後一個星期日的輸入。請幫助我執行命令。
日期+%間%D-%Y -D 「2017年9月10日 - 7日」
日期+%間%D-%Y -D 「最後太陽報」
獲得的最後一個星期日日期作爲輸出從某一特定日期(不是當前的日期)作爲輸入如何獲得最後一個星期天日期從UNIX
例輸入:2017年8月30日(%間% D-%Y)
輸出應該是最後一個星期日:2017年8月27日
===
下面所有的命令都使用當前日期作爲參考。但我想給的參考日期作爲獲取最後一個星期日的輸入。請幫助我執行命令。
日期+%間%D-%Y -D 「2017年9月10日 - 7日」
日期+%間%D-%Y -D 「最後太陽報」
我希望這下面的解決方案可以幫助你:
export day=08-30-2017
date -d "$day -$(date -d $day +%w) days"
這將始終打印給定日期(或日期本身)之前的星期日。
date -d "$day -$(date -d $day +%u) days"
這將始終打印給定日期之前的星期日(而不是日期本身)。
要獲得給定日期的最後一個星期一?應該改變什麼?就像我想要最後一個星期一,星期一,星期二,星期三..直到日期作爲input.Please幫助我這個 –
@DivyaS得到星期一:'date -d「$ day - $(date -d $ day +%u )天+ 1天「,並繼續爲星期二和星期三增加日子。嘗試這個。 –
上次編輯已恢復。你爲什麼複製/粘貼@RomanPerekhrest的答案? – Toto
如果你對付一個固定的日期格式%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是星期一
要獲得給定日期的最後一個星期一?應該改變什麼?就像我想要的最後一個星期一,星期一,星期二,星期三..直到給出的日期作爲input.Please幫助我這一點。 –
非常感謝你 –
@DivyaS,不客氣 – RomanPerekhrest
非常簡單的方法 -
首先從給定日期計算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
輸入日期是否總是以這種格式'%m-%d-%Y'在你身邊? – RomanPerekhrest