假设我有一个模特班
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语句从未运行?如何提取时差?
另外,如果你得到一个时差,有没有一种简单的方法可以将时差转换成整数,比如总时间的秒数。
您的代码已经在工作;返回了^{} object 。
要获得秒的总数,您需要调用结果} method :
timedelta
上的^{.total_seconds()
返回一个float
值,包括微秒。注意,您需要使用一个时区感知对象,因为Django也处理时区感知对象。见Django Timezones documentation。
演示
.total_seconds()
(使用简单的datetime
对象,但原理相同):因为这两个对象都是时区感知的(有一个
.tzinfo
属性不是None
),所以它们之间的计算会处理时区,在考虑到两个对象的时区时,从另一个对象中减去一个将做正确的事情。相关问题 更多 >
编程相关推荐