2016-10-28 5 views
-4

Ich habe eine Spalte von Schwimmern. Ich möchte sie in Zeitstempel mit dem Format hh:mm konvertieren. Ich möchte sie auch auf die nächste halbe Stunde runden. Konvertieren und Runden Floats zu Timestamp in Python

Dies ist die Regel für die Konvertierung:

  • 1.0 bedeutet 00:01 und ich möchte, dass sie runden 00:00

  • 735.0 bedeutet 07:35 und ich möchte sie abzurunden, um 07:30

  • 2346.0 bedeutet 23:46 und ich möchte sie aufrunden

+3

Was die Schwimmer tun vertreten? Anzahl der Minuten? Sekunden? –

+2

Sie müssen wirklich die Logik erklären, um von einem Floss zum Zeitstempel zu gehen und genug Beispiele zu geben, um mehrere Fälle zu zeigen, die zwei Beispiele, die Sie zeigen, sind nicht genug. –

+0

Entschuldigung! Sie können sagen, ich bin neu in der Programmierung und in dieser Community. Hoffentlich können meine Änderungen meine Frage klären. –

Antwort

1

Versuchen Sie, diese (nicht vollständig getestet, aber Sie erhalten die Idee):

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 ist von

How to round the minute of a datetime object python

Prost

Verwandte Themen