2014-04-12 92 views
1

如何在Python中舍入5分鐘時間?python utc time減去5分鐘

我有這個腳本,但我認爲這可以是easyer,並且整個小時計算出錯。當它的22:03它將返回21:95而不是21:55。

import datetime 
from datetime import date 
import time 

utc_datetime = datetime.datetime.utcnow() 
jaar = date.today().year 
maand = time.strftime("%m") 
dag = time.strftime("%d") 
uurutc = utc_datetime.strftime("%H") 
autc = utc_datetime.strftime("%M") 
minuututc = int(5 * round(float(autc)/5)-5) 
uur = time.strftime("%H") 
a = time.strftime("%M") 
minuut = int(5 * round(float(a)/5)-5) 

timestamp = ''.join(str(x) for x in [jaar, maand, dag, uurutc, minuututc]) 

print timestamp 

什麼代碼實際上應該做的事:

我們的本地時間爲UTC + 2,但我只需要UTC時間,所以輸出必須在UTC。其次,時間需要在當前時間前5分鐘,然後下降。 字符串的輸出格式應該是:YYYYMMDDHHMM。

實施例:

本地時間:12時53>輸出腳本:10:45

本地時間:17:07>輸出腳本:15:00

本地時間:8時24分>輸出腳本:06:15

誰能幫我解決這個問題?

謝謝!

+2

你看過'datetime.timedelta'嗎? – Victory

+0

你的例子下降到四分之一小時,而不是5分鐘,例如'10:53' - >'10:45',而不是'10:50'。 – jfs

回答

6

使用datetime.timedelta

from datetime import datetime, timedelta 
now = datetime.utcnow() 
rounded = now - timedelta(minutes=now.minute % 5 + 5, 
          seconds=now.second, 
          microseconds=now.microsecond) 
print rounded 
# -> 2014-04-12 00:05:00 
+0

謝謝,如何提取5分鐘的這個? – user3408380

+0

對不起,如何把它放在上面的代碼中?謝謝 – user3408380

+0

謝謝,但我需要從那段時間提取5分鐘 – user3408380

-1

按照上面的註釋,使用timedelta類:

import datetime 

now = datetime.datetime.now() 
five_mins = datetime.timedelta(minutes=5) 

five_mins_ago = now - five_mins 

print five_mins_ago 

編輯:其他答案是因爲它涵蓋了四捨五入

更好
1

你可以使用d = d.replace(minute=n*(d.minute // n))圓整爲n分鐘:

>>> d = datetime(2014, 4, 12, 0, 7); print(d.replace(minute=5*(d.minute // 5))) 
2014-04-12 00:05:00 
>>> n = 15 
>>> d = datetime(2014, 4, 12, 10, 53); print(d.replace(minute=n*(d.minute//n))) 
2014-04-12 10:45:00 
>>> d = datetime(2014, 4, 12, 15, 7); print(d.replace(minute=n*(d.minute//n))) 
2014-04-12 15:00:00 
>>> d = datetime(2014, 4, 12, 6, 24); print(d.replace(minute=n*(d.minute//n))) 
2014-04-12 06:15:00