時間が経過するまでの時間を表示する関数を作成しましたが、何らかの理由で最初のelifの後の特定のステートメントで条件文が返されません。 printステートメントを追加すると、オブジェクトが印刷されても関数が流れていることがわかります。いくつかの投稿が経過してから経過した時間が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/ja/1.10/ref/contrib/humanize/#naturaltime)を使いたいかもしれません – solarissmoke