我试图将当前表示为字符串的时间读入Python 2.7中的Django TimeField模型,并同时通过浮点数进行缩放。
例如:
00:31:14 / 1.0617 = 00:29:20
我已经成功阅读并存储到模型中,但无法在" nice"中缩放时间。方式(目前我从数据库中读取时间对象并更新它)。
我想在保存到数据库之前使用TimeField所基于的python datatime对象来执行此计算。
相关代码:
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)
答案 0 :(得分:1)
除以浮点在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的更多信息。希望有所帮助。