【问题标题】:How to get total duration in Django如何在Django中获得总持续时间
【发布时间】:2021-04-21 04:40:48
【问题描述】:

我正在尝试显示特定作品的持续时间。

class UserData(models.Model):
    uid = models.CharField(max_length=100)
    email = models.CharField(max_length=100)
    start_date = models.DateField(auto_now_add=True,editable=False)
    end_date = models.DateTimeField(auto_now=True)

    
    @property
    def duration(self):
        if not (self.start_date and self.end_date): 
            return None
        a,b=self.start_date, self.end_date
        return '%s:%s' % ((b-a).days*24 + (b-a).seconds//3600, (b-a).seconds%3600//60)

但是当我调用 duration 属性来获取总时间时,它为 -: 'datetime.datetime' 和 'datetime.date' 提供了不支持的操作数类型错误。

如何从我的 UserData 模型中获取持续时间日期?

【问题讨论】:

  • 同时使用 DateField auto_now_adddefault=timezone.now
  • 如果我在两个字段中都使用auto_now_add,我不会得到 duration ,两者都会得到相同的时间。因为link
  • 一个是DateTimeField,另一个是DateField。这两个之间的差异将不准确。持续时间总是从午夜开始计算。
  • @VishalSingh,是的,你是对的。我明白了。谢谢

标签: python django python-datetime duration


【解决方案1】:

您可以使用两种解决方案。

  1. 将 start_date 和 end_date 都用作 DateTime 字段。
  2. a,b=self.start_date, self.end_date.date()。仅使用 end_date 到日期。

希望这会奏效。

【讨论】:

  • 感谢您的回答,我用过start_date and end_date both as DateTime Fields. 一个是auto_now_add=True 另一个是auto_now=True 我可以看到持续时间。
  • 我只得到持续时间的小时数,例如:48:0 hrs。如何从我的持续时间属性中获取分钟和秒?谢谢。
猜你喜欢
  • 1970-01-01
  • 2016-02-23
  • 2022-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-15
  • 2012-06-27
相关资源
最近更新 更多