gpt4 book ai didi

python - 将 Django TimeField 中的时间乘以 float

转载 作者:太空宇宙 更新时间:2023-11-04 05:08:27 24 4
gpt4 key购买 nike

我正在尝试将当前表示为字符串的时间读入 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com