Ich versuche, eine Uhrzeit, die derzeit als Zeichenfolge in einem Django TimeField-Modell in Python 2.7 dargestellt wird, zu lesen und es gleichzeitig über einen Float skalieren.Multiplizieren Zeit in Django TimeField durch float
Zum Beispiel:
00:31:14/1.0617 = 00:29:20
ich erfolgreich in der Zeit gelesen habe und in das Modell gespeichert, kann aber nicht die Zeit in einer „schönen“ Art und Weise skaliert (zur Zeit las ich die Zeit Objekt wieder aus die Datenbank und aktualisiere sie).
Ich möchte das Python-Datatime-Objekt verwenden, auf dem das TimeField basiert, um diese Berechnung vor dem Speichern in der Datenbank durchzuführen.
Relevante Code:
class Time(models.Model):
time = models.TimeField()
date = models.DateField()
date = "12/6/2009"
time = "00:31:14"
date = datetime.strptime(date, "%d/%m/%Y").strftime("%Y-%m-%d")
time = models.Time(date=date, time=time)
time.save()
db_instance = models.Time.objects.all().filter(id=time.id)[0]
db_instance.time = db_instance.time.replace(
minute=int((db_instance.time.minute * 60 + db_instance.time.second)/1.0617)/60,
second=int((db_instance.time.minute * 60 + db_instance.time.second)/1.0617) % 60)
aktualisieren
Wie Dandekar schlug ich habe die Timedelta-Klasse erweitert Multiplikation und Division enthalten:
from datetime import timedelta
class TimeDeltaExtended(timedelta):
def __div__(self, divisor):
return TimeDeltaExtended(seconds=self.total_seconds()/divisor)
def __mul__(self, multiplier):
return TimeDeltaExtended(seconds=self.total_seconds()*multiplier)