2016-08-23 51 views

回答

1

在這些情況下,關鍵是要減一月份,從當月的15天:

$ date --date="$(date +%Y-%m-15) - 1 month" 
Fri Jul 15 00:00:00 CEST 2016 

然後,它僅僅是一個使用正確的格式的事:

$ date --date="$(date +%Y-%m-15) - 1 month" "+%Y%m" 
201607 

要將值存儲在var中,只需使用通用的var=$(command)語法即可。

GNU Coreutils → 28.7 Relative items in date strings

模糊的單位可能會導致相關項目的問題。例如, '2003-07-31 -1個月'可能會評估爲2003-07-01,因爲2003-06-31 是無效日期。爲了更可靠地確定前一個月,您可以在本月15日前的月份索要該月份。對於 例如:

$ date -R 
Thu, 31 Jul 2003 13:02:39 -0700 
$ date --date='-1 month' +'Last month was %B?' 
Last month was July? 
$ date --date="$(date +%Y-%m-15) -1 month" +'Last month was %B!' 
Last month was June! 

此外,操縱時鐘周圍的變化,如 夏令飛躍日期時要小心。在少數情況下,從時鐘開始增加或減去 多達24小時,因此在 啓動日曆計算之前,通過將TZ環境變量設置爲「UTC0」,通常採用 通用時間是明智的。