假设我在模型中上课
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来获取post发布到现在的时间差,根据文档,DateTimeField应该可以自动转换为datetime,对吗?为什么打印语句永远不会运行?你如何提取时差?
此外,如果你得到时差,有没有一种简单的方法可以将时差转换为整数,比如总时间的秒数。
原文由 Bob Fang 发布,翻译遵循 CC BY-SA 4.0 许可协议
您的代码已经在运行;返回一个
datetime.timedelta
对象。要获取总 _秒数_,您需要对生成的
timedelta
调用.total_seconds()
方法:.total_seconds()
返回一个float
值,包括微秒。请注意,您需要使用 时区感知
datetime
对象,因为 DjangoDateTimeField
处理时区感知datetime
对象。请参阅 Django 时区文档。.total_seconds()
的演示(用天真的datetime
对象,但原理是一样的):因为这两个对象都是时区感知的(有一个
.tzinfo
不是None
的属性),它们之间的计算处理时区并且从另一个中减去一个会做正确的事情考虑到任一对象的时区。