2017-05-12 30 views
0

どのようにして最も近い15分のクロック・マークに時間を切り捨てることができますか? 次のコードは、最も近い15分のクロックマークに丸めます。つまり、時刻が5:08の場合、5:15になります。しかし、私がいないアップダウンこのラウンドを行い、5時00分 なりたいここPython、DOWN時間を最も近い15分のクロック・マークに丸める

を助けてください私のコード

fajr_jamaat = ceil(fajr_jamaat_date).strftime('%H:%M:%S') 

で、機能が、これは動作するはず

def ceil(dt): 
    if dt.minute % 15 or dt.second: 
     return dt + timedelta(minutes = 15 - dt.minute % 15, seconds = -(dt.second % 60)) 
    else: 
     return dt 
+0

分をmath.floor(dr.minutes/15)* 15に設定するだけです。 – Metareven

答えて

0

です。

import datetime 

def ceil(dt): 
    minut = int(dt.strftime('%M'))*60 
    secon = int(dt.strftime('%S')) 
    h = int(dt.strftime('%H')) 
    tot = minut + secon 
    #print(tot) 
    nearest = round(tot/900)*900 
    #print('time is %d:%d'%(tot/60, tot%60), 'nearest fifteen mark is %d:%d'%(nearest/60, nearest%60)) 
    if nearest/60 == 60 and h < 23: 
     nr_15_mark = dt.replace(hour=h+1, minute=0, second=0) 
    elif nearest/60 == 60 and h == 23: 
     #wrapping the hour back to 0 
     nr_15_mark = dt.replace(hour=0, minute=0, second=0) 
    else: 
     nr_15_mark = dt.replace(minute=int(nearest/60), second=nearest%60) 
    return nr_15_mark 

#fajr_jamaat_date = datetime.datetime(2017,1,1,23,58,0) 
fajr_jamaat = ceil(fajr_jamaat_date).strftime('%H:%M:%S') 
#print(fajr_jamaat) 

我々は唯一の時間、分、秒を検討しているようfajr_jamaat_dateの時間は23時47分30秒を超えた場合、我々は、最寄りのマークを見つけているとき、私は日付の追加を無視していますのでご注意ください。

+0

次のエラーが発生しました次のエラーが発生しました。nr_15_mark = dt.replace(分= int(最も近い/ 60)、秒=最近傍%60) TypeError:整数引数が必要です。浮動小数点を取得しました – Ossama

+0

@Ossama that奇妙です。 'int(nearest/60)'は整数に変換し、余りはfloatにすることはできません。私はすべての15分に最も近い時間でテストしました。このエラーが発生したときに入力した期間は何ですか? – Nj3

+0

時刻は05:08:00 – Ossama

関連する問題