【问题标题】:Subtract or add datetime fields which are returned from djangomodel减去或添加从 djangomodel 返回的日期时间字段
【发布时间】:2017-08-12 04:47:21
【问题描述】:

搜索后,我找不到问题的答案。我有这个模型:

  class Subtask(models.Model):
    Created_subtask_date = models.DateTimeField(default=timezone.now, null=True)
    subflag = models.BigIntegerField(default=0, null=True)

    def __str__(self):
        return str(self.Created_subtask_date)

如你所见,这个对象返回一个字符串,它是子任务的创建日期。

我的问题是如何减去或添加此模型的两个对象(两个日期时间)。例如,如果我有 subtask1 与此任务的日期相同。然后我有另一个对象(例如 subask 2),它有另一个日期。我试图将它们转换为整数,但没有成功。

非常感谢任何帮助

【问题讨论】:

  • 为什么要将它们转换为整数?你想达到什么目的?
  • 我正在尝试查找两个对象之间的时间差。该类型中的日期时间是字符串。我尝试将str(self.Created_subtask_date) 更改为int(self.Created_subtask_date),但我当然会遇到错误。

标签: django datetime django-models django-views


【解决方案1】:

您不需要将它们转换为整数。您可以轻松获得两个日期的差异。例如

from datetime import datetime
d = datetime(2017,3,17,12,50,59)
d2 = datetime.now()

e = d2 - d
print(e.days,e.seconds) # output 3 (days) 41569 (seconds)

希望对你有帮助。

【讨论】:

  • 谢谢!看起来不错
【解决方案2】:

如果你想得到时差,那么你应该这样做:

from datetime import timedelta    

date1 = subtask1.Created_subtask_date
date2 = subtask2.Created_subtask_date

diff = date1 - date2

print(type(diff))  # <class 'datetime.timedelta'>

print(diff.seconds)
print(diff.days)

更多关于timedelta

【讨论】:

    猜你喜欢
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    相关资源
    最近更新 更多