我正在尝试将当前表示为字符串的时间读入 Python 2.7 中的 Django TimeField 模型,并同时通过 float 对其进行缩放。
例如:
00:31:14 / 1.0617 = 00:29:20
我已成功读取时间并将其存储到模型中,但无法以“很好”的方式缩放时间(目前我从数据库中读回时间对象并对其进行更新)。
在保存到数据库之前,我想使用 TimeField 基于的 python 数据时间对象来执行此计算。
相关代码:
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)
更新
按照 Dandekar 的建议,我扩展了 timedelta 类以包括乘法和除法:
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)
最佳答案
float 除法在 Python 2.x 中不起作用,但在 Python 3.2x 中起作用 所以通常,要减去时间,您可以执行以下操作:
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")
要划分时间,您必须将 timedelta 子类化为类似的东西
class MyTimeDelta(timedelta):
def __div__(self, deltafloat):
# Code
更多信息 here .希望对您有所帮助。
关于python - 将 Django TimeField 中的时间乘以 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43722482/