2014-10-16 19 views
0

我正在寫一個Python代碼來將linux系統中的日期更改爲today-1(動態)。我嘗試過各種組合,但我無法成功。我搜查了一下,發現我的場景in this question非常接近。如何使用Linux中的命令動態地更改日期

我能夠改變日期,如果我執行與靜態值的命令說:

date --set="$(date +'2013%m%d %H:%M')" 

不過,我不希望指定一年即硬編碼值,2013年相反,我想指定像"%y-1"

date --set="$(date +'%y-1%m%d %H:%M')" 

如果我運行上面的命令,我收到以下錯誤

[[email protected] ~]$ date --set="$(date +'%y-1%m%d %H:%M')" 
date: invalid date `14-11016 13:05' 
+0

相關:http://stackoverflow.com/questions/12081310/python-module-to -change-系統日期和時間 – 2014-10-16 18:41:56

回答

0

date將解釋您字面上顯示的%y-1。您需要的是檢索當前年份,減去1並將此值用作新的一年。 要獲得current_year - 1你可以這樣做:

previous_year=$((`date +'%y'`-1)) 
echo $previous_year 
>>> 13 

現在,你只需要使用這個變量來設定新的日期。

2

感謝您的回答。儘管我沒有嘗試過你的方法,但是如果你願意的話,在處理算術運算時必須再次處理格式化問題。

所以,我想出了一個更簡單的方法廣義

與此命令

date --date='1 years ago'

這給前一年日期抓取previous_year值。現在,這可以在Python程序中使用下面的方法來更新系統

"date --set=$(date +'%%y%%m%s %%H:%%M') % previous_year"

這種方法具有一些優勢像

  1. 我可以申請日期和月份該方法以及如"1 days ago", "1 month ago"以及+%d, +%m, +%y值。

    例如,date --date='1 years ago' +%y

  2. 我不必擔心日期和月份的算術運算邏輯