【问题标题】:Difference between two dates python/Djangopython / Django两个日期之间的差异
【发布时间】:2017-02-21 19:38:19
【问题描述】:

我需要知道如何获取 edit_date(我的一个模型中的列)和 datetime.now() 之间经过的时间。我的 edit_date 列在 DateTimeField 格式下。 (我使用的是 Python 2.7 和 Django 1.10)

这是我想要做的功能:

def time_in_status(request):
    for item in Reporteots.objects.exclude(edit_date__exact=None):
        date_format = "%Y-%m-%d %H:%M:%S"
        a = datetime.now()
        b = item.edit_date
        c = a - b
        dif = divmod(c.days * 86400 + c.minute, 60)
        days = str(dif)

    print days

我从这个函数中得到的唯一信息是经过的分钟数和秒数。我需要的是按以下格式获取此日期:

Time_elapsed = 3d 47m 23s

有什么想法吗?如果我不清楚您是否需要更多信息,请告诉我

感谢您的关注,

【问题讨论】:

标签: django python-2.7 datetime time


【解决方案1】:

看看dateutil.relativedelta

http://dateutil.readthedocs.io/en/stable/relativedelta.html

from dateutil.relativedelta import relativedelta
from datetime import datetime
now = datetime.now()
ago = datetime(2017, 2, 11, 13, 5, 22)
diff = relativedelta(ago, now)
print "%dd %dm %ds" % (diff.days, diff.minutes, diff.seconds)

我是根据记忆编写代码,因此您可能需要根据需要对其进行调整。

【讨论】:

  • 这个工作我只需要修改一些东西:),谢谢!
【解决方案2】:

试试类似的东西

c = a - b
minutes = (c.seconds % 3600) // 60
seconds = c.seconds % 60
print "%sd %sm %ss" % (c.days, minutes, seconds)

【讨论】:

  • 几小时呢?
  • 哦,我没有包含小时数,因为您没有将它们包含在 Time_elapsed 示例中。你会得到像hours = c.seconds // 3600这样的时间。
猜你喜欢
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
  • 2011-10-29
  • 1970-01-01
  • 1970-01-01
  • 2017-06-13
  • 1970-01-01
  • 2020-10-05
相关资源
最近更新 更多