2016-10-28 9 views
-4

私は浮動小数点数の列を持っています。私はhh:mmの形式でタイムスタンプに変換したいと思います。私はまたそれらを最も近い30分に丸めたいと思う。浮動小数点数をPythonのタイムスタンプに変換して丸める

これは、変換のためのルールです:

  • 1.000:01を意味し、私は00:00

  • 735.0にそれらを丸めること07:35を意味し、私は07:30

  • にそれらを丸めます2346.023:46を意味し、それらを丸めてにしたい

+3

?分数?秒? –

+2

浮動小数点からタイムスタンプへのロジックを説明し、いくつかのケースを示すのに十分な例を与える必要があります。あなたが示す2つの例では十分ではありません。 –

+0

私の謝罪!あなたは私がプログラミングやこのコミュニティで新しいことを伝えることができます。うまくいけば、私の編集は私の質問を明確にすることができます。 –

答えて

1

(完全にテストされていないが、あなたのアイデアを得る)、これを試してみてください:

from datetime import date, timedelta, datetime, time 

def roundTime(dt=None, dateDelta=timedelta(minutes=15)): 
    """Round a datetime object to a multiple of a timedelta 
    dt : datetime.datetime object, default now. 
    dateDelta : timedelta object, we round to a multiple of this, default 1 minute. 
    Author: Thierry Husson 2012 - Use it as you want but don't blame me. 
      Stijn Nevens 2014 - Changed to use only datetime objects as variables 
    """ 
    roundTo = dateDelta.total_seconds() 

    if dt == None : dt = datetime.now() 
    seconds = (dt - dt.min).seconds 
    # // is a floor division, not a comment on following line: 
    rounding = (seconds+roundTo/2) // roundTo * roundTo 
    return dt + timedelta(0,rounding-seconds,-dt.microsecond) 


time_input = 735.0 
dt = datetime.strptime(str(int(time_input)).zfill(4), "%H%M") 
print(roundTime(dt,timedelta(minutes=15)).strftime('%H:%M')) 

round_timeのfuncがある

How to round the minute of a datetime object python

乾杯から山車を何

関連する問題