2014-03-31 110 views
2

我在我的一個腳本中使用了這個功能,我肯定它已經工作了很多年了。今天它的下個月的說法是五月?Bash - 獲取下個月的腳本?

#date 
Mon Mar 31 15:30:13 BST 2014 

#date +"%B %Y" --date="+1 month" 
May 2014 

任何人都知道問題是什麼 - 有沒有更好的「下個月」腳本我應該使用?

+2

有趣的是,如果你做+2個月,你也會得到5月。這是因爲它會在下個月檢查今天的日期,4月份會有30天。 – fedorqui

+0

猜猜這並不是下個月最好的命令。 – Greg

+0

你可以使用'cal'。這有點愚蠢,但是'cal -A1 | awk'{print $ 3;退出}'「。 – fedorqui

回答

7

GNU手冊頁:

日期模糊的單位會導致相關項目的問題。例如,'2003-07-31 -1個月'可能評估爲2003-07-01,因爲2003-06-31是無效日期。 更可靠地確定上一個月,你可以要求月份當月的15日之前

您可以每天使用它存在於所有月份:

date +"%B %Y" --date="$(date +%Y-%m-15) next month" 

結果:

April 2014 
+0

謝謝 - 好主意! – Greg

+0

也許你也可以解釋爲什麼得到'May'的原因是'April'沒有31天。所以這個月很快漲起來了。 – devnull

+0

我已經到了,但@Broslow擊敗了我 – Timmah