Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

144
Views
Multiplica el tiempo en Django TimeField por float

Estoy tratando de leer un tiempo actualmente representado como una cadena en un modelo Django TimeField en Python 2.7 y escalarlo a través de un flotador al mismo tiempo.

Por ejemplo:

 00:31:14 / 1.0617 = 00:29:20

He leído con éxito el tiempo y lo he almacenado en el modelo, pero no puedo escalar el tiempo de una manera "agradable" (actualmente leo el objeto de tiempo de la base de datos y lo actualizo).

Me gustaría usar el objeto de tiempo de datos de python en el que se basa TimeField para hacer este cálculo antes de guardarlo en la base de datos.

Código relevante:

 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)

Actualizar

Como sugirió Dandekar, amplié la clase timedelta para incluir la multiplicación y la división:

 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)
about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

La división por flotador no funciona en Python 2.x pero funciona en Python 3.2x Entonces, normalmente, para RESTAR el tiempo, haces algo como lo siguiente:

 dt = date+" "+time dt=datetime.datetime.strptime(dt, "%d/%m/%Y %H:%M:%S") delta=datetime.timedelta(seconds=1.0617) adjusted=dt-delta print adjusted.strftime("%d/%m/%Y %H:%M:%S")

Para DIVIDIR el tiempo, tendría que subclasificar timedelta a algo como

 class MyTimeDelta(timedelta): def __div__(self, deltafloat): # Code

Más sobre eso aquí . Espero que ayude.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!