2012-07-03 92 views
0

我有不同時代的數組,看起來像這樣:從int無格式減去秒

20120628061533.0, 20120628064851.0, 20120628064853.0, 20120628064920.0, 20120628064929.0 

我想要做的就是減去10秒30秒,從時間中的一個分鐘,但這個問題我現在面臨的是,我不能只是簡單地減去10或30或60,因爲這樣的數字將不再以時間格式(即最後兩個數字可以大於60)

反正有沒有做到這一點容易?

+0

有很多更好的方法來做時間和日期的數學,尤其是像python這樣的語言。這是一個特別棘手和微妙的嘗試和重塑的輪子,你會更好地重新思考你的方法。 – Wug

回答

5

使用datetime

import datetime 

a = 20120628061533.0 

dt = datetime.datetime.strptime(str(int(a)), '%Y%m%d%H%M%S') 
dt -= datetime.timedelta(minutes=1) 

print dt.strftime('%Y%m%d%H%M%S') 

打印

20120628061433 

總之,保持datetime對象並將其寫入到屏幕/文件只有當轉換爲字符串。

+2

方式太快;尚未完成打字!從我+1。 –

+0

我已經達到了進口時間; fmt =「%Y%m%d%H%M%S.0」'...... – MattH

+1

同樣在這裏,甜點我會想念你! –

0

不,沒有簡單的方法可以做到這一點。如果你用面向對象的語言編寫,我會建議創建一個類,它可以用一個整數來構造,例如你所展示的那個類,它表示相應的日期和時間,內部是一堆整數,一年一個,一個月等等。然後,您可以處理這些日期/時間元素中的「轉換因子」(例如,每分鐘60秒,每小時60分鐘等等,確保小心一個月內的天數),因爲你在做算術。

+0

對不起,沒有注意到這是用Python標記的。我對Python不太瞭解,所以也許其他人可以提供詳細信息。 – user1473404

+0

我並不是故意表達自己的意思,但如果你不認爲在面向對象的語言中有一種簡單的方法來做到這一點,也許你應該考慮其他語言? –