仅从基本转换原理来看:
weeks = seconds / (7*24*60*60)
days = seconds / (24*60*60) - 7*weeks
hours = seconds / (60*60) - 7*24*weeks - 24*days
minutes = seconds / 60 - 7*24*60*weeks - 24*60*days - 60*hours
seconds = seconds - 7*24*60*60*weeks - 24*60*60*days - 60*60*hours - 60*minutes
做同样事情的一种不太吵闹的方式:
weeks = seconds / (7*24*60*60)
seconds -= weeks*7*24*60*60
days = seconds / (24*60*60)
seconds -= days*24*60*60
hours = seconds / (60*60)
seconds -= hours*60*60
minutes = seconds / 60
seconds -= minutes *60
再次相同的事情的更干净的版本divmod
返回元组中除法结果和余数的函数(division, remainder)
:
weeks, seconds = divmod(seconds, 7*24*60*60)
days, seconds = divmod(seconds, 24*60*60)
hours, seconds = divmod(seconds, 60*60)
minutes, seconds = divmod(seconds, 60)
基本上,这个解决方案最接近您的尝试,因为这就是divmod
does:
weeks, seconds = divmod(seconds, 7*24*60*60)
相当于
weeks = seconds / (7*24*60*60)
seconds = seconds % (7*24*60*60)
在这里,我们本质上是找到我们时间中的整周数,并保留删除这些周后剩下的内容。
你也可以从另一端让它变得更漂亮:
minutes, seconds = divmod(seconds, 60)
hours, minutes = divmod(minutes, 60)
days, hours = divmod(hours, 24)
weeks, days = divmod(days, 7)
这背后的想法是,你的答案中的秒数是除以分钟后的余数;分钟是将所有分钟除以小时等的余数...这个版本更好,因为您可以轻松地将其调整为月,年等...