我創建了一個函數來顯示已經過了多少時間,但由於某種原因,條件語句不會在第一個elif之後的特定語句處返回。添加打印語句表明,該功能在打印出對象時正在流動。我不確定爲什麼會發生這種情況,因爲某些帖子發佈後的時間已經超過了3600秒。因此,它將所有經過時間轉換爲分鐘,但我會說以秒爲單位的時間正常運行。我是在做我的轉換錯誤還是語法或類型錯誤?另外,是否有更好的方法來解決這個問題?爲什麼秒不能轉換爲小時和天
def time_diff(self):
if self.date_pub:
now = datetime.datetime.utcnow().replace(tzinfo=utc)
diff = now - self.date_pub
total_time = diff.total_seconds()
if total_time < 60:
return str(int(total_time)) + "s ago."
elif total_time > 60 or total_time <= 3600:
return str(int(total_time/60)) + "m ago."
elif total_time >= 3600 or total_time <= 86400:
return str(int(total_time/3600)) + "h ago."
elif total_time >= 86400 or total_time <= 604800:
return str(nt(total_time/86400)) + "d ago."
else:
return date_pub
您是否使用調試器來遍歷代碼?另外,爲什麼不使用'timedelta'呢? – ray
您可能想使用['django.contrib.humanize.naturaltime'](https://docs.djangoproject.com/zh/1.10/ref/contrib/humanize/#naturaltime) – solarissmoke