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

标签 python django

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

相关文章:

Python + 自签名证书 + HTTP 不工作但在 C#、Java 中工作

python - Django WSGI Apache VirtualHost,返回 404 错误

javascript - 如何为模板中显示的 django 对象生成唯一的 div id

django - 使用 libjpeg 在 vi​​rtualenv 上安装 pil

python - 使用 python 创建 bash 文件

python - tensorflow 中的二进制阈值激活函数

python - 使用 python 和 networkx 进行大图可视化

python - 为什么在 python 中没有使用指定的正则表达式找到它?

python - Django 和 AWS 简单电子邮件服务

django 没有反向匹配表单操作不起作用