必要に応じて timedelta オブジェクトをフォーマットするために、次の小さなスクリプトを作成しました。
def due_format(self):
time_diff = abs((self.due - datetime.datetime.now()).total_seconds())
days = time_diff / 60 / 60 / 24
hours = time_diff / 60 / 60
minutes = time_diff / 60
hours_wo_days = hours - (math.floor(days) * 24)
minutes_wo_hours = minutes - (math.floor(hours) * 60)
if (days >= 7):
self.due_format = '{} Days'.format(int(days))
elif (hours > 48):
self.due_format = '{} Days, {} Hours'.format(int(days), int(hours_wo_days))
elif (hours <= 48 and hours >= 10 ):
self.due_format = '{} Hours'.format(int(hours))
elif (hours <= 1):
self.due_format = '{} Minutes'.format(int(minutes))
elif (hours < 10):
self.due_format = '{} Hours, {:.0f} Minutes'.format(int(hours), int(minutes_wo_hours))
私のアプローチは物事を複雑にしすぎていると感じているので、この問題を別の方法で攻撃していたかどうかを尋ねたいと思います. 利用できるショートカットはありますか? この質問がSOに適していることを願っています。