首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django:如何从时间帖子中获得时差?

Django:如何从时间帖子中获得时差?
EN

Stack Overflow用户
提问于 2013-04-15 21:09:14
回答 4查看 30.4K关注 0票数 25

假设我在model中有一个类

代码语言:javascript
复制
 class Post(models.Model):
     time_posted = models.DateTimeField(auto_now_add=True, blank=True)

     def get_time_diff(self):
         timediff = timediff = datetime.datetime.now() - self.time_posted
         print timediff # this line is never executed
         return timediff

我定义了一个get_time_diff来获取从帖子发布到现在的时间差,根据文档,DateTimeField应该能够自动转换为datetime,对吗?为什么print语句从未运行过?如何提取时间差?

此外,如果你得到一个时间差,有没有一种简单的方法将时间差转换成一个整数,比如总时间的秒数。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-15 21:15:54

您的代码已经在运行;将返回一个datetime.timedelta object

要获取总秒数,需要对生成的timedelta调用.total_seconds() method

代码语言:javascript
复制
from django.utils.timezone import utc

def get_time_diff(self):
    if self.time_posted:
        now = datetime.datetime.utcnow().replace(tzinfo=utc)
        timediff = now - self.time_posted
        return timediff.total_seconds()

.total_seconds()返回一个float值,包括微秒。

注意,您需要使用时区感知的datetime对象,因为Django DateTimeField还处理时区感知的datetime对象。参见Django Timezones documentation

.total_seconds()演示(使用简单的datetime对象,但原理是相同的):

代码语言:javascript
复制
>>> import datetime
>>> time_posted = datetime.datetime(2013, 3, 31, 12, 55, 10)
>>> timediff = datetime.datetime.now() - time_posted
>>> timediff.total_seconds()
1304529.299168

因为这两个对象都是时区感知的(有一个不是None.tzinfo属性),所以它们之间的计算会考虑时区,当考虑到任何一个对象的时区时,从另一个中减去一个会做正确的事情。

票数 36
EN

Stack Overflow用户

发布于 2013-04-15 21:27:26

假设您是在模板中执行此操作,则还可以使用timesince模板标记。

例如:

代码语言:javascript
复制
{{ blog_date|timesince:comment_date }}
票数 11
EN

Stack Overflow用户

发布于 2013-04-15 21:13:29

你的代码

代码语言:javascript
复制
timediff = datetime.datetime.now() - self.pub_date

应该努力获得时间差。但是,这将返回timedelta对象。要获得以秒为单位的差值,可以使用.seconds属性

代码语言:javascript
复制
timediff = datetime.datetime.now() - self.pub_date
timediff.seconds  # difference in seconds.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16016002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档