我有一个time。我想要其中的日,小时和分钟-作为元组或字典…我并不大惊小怪。

这些年来,我肯定用十几种语言做过十几次,但Python通常对所有问题都有一个简单的答案,所以我想在抛出一些令人作呕的简单(但冗长)数学之前,在这里问一下。

富兹先生提出了一个很好的观点。

我处理的是“列表”(有点像ebay列表),其中每个列表都有一个持续时间。我试图通过做when_added + duration - now找到剩下的时间

我说的对吗,这不包括夏令时?如果不是,最简单的增加/减少一个小时的方法是什么?


当前回答

我不明白

days, hours, minutes = td.days, td.seconds // 3600, td.seconds // 60 % 60

这个怎么样

days, hours, minutes = td.days, td.seconds // 3600, td.seconds % 3600 / 60.0

每分钟的分和秒都是浮点数。

其他回答

这个更紧凑一些,小时、分和秒分在两行。

days = td.days
hours, remainder = divmod(td.seconds, 3600)
minutes, seconds = divmod(remainder, 60)
# If you want to take into account fractions of a second
seconds += td.microseconds / 1e6

我不明白

days, hours, minutes = td.days, td.seconds // 3600, td.seconds // 60 % 60

这个怎么样

days, hours, minutes = td.days, td.seconds // 3600, td.seconds % 3600 / 60.0

每分钟的分和秒都是浮点数。

我使用了以下方法:

delta = timedelta()
totalMinute, second = divmod(delta.seconds, 60)
hour, minute = divmod(totalMinute, 60)
print(f"{hour}h{minute:02}m{second:02}s")

我发现最简单的方法是使用str(timedelta)。它将返回格式为3天,21:06:40.001000的sting,您可以使用简单的字符串操作或正则表达式解析小时和分钟。

如果你有约会时间。时间增量值td td。Days已经给了你想要的“Days”。Timedelta值以秒(而不是直接的小时或分钟)作为一天的分数,所以你确实需要执行“令人作呕的简单数学”,例如:

def days_hours_minutes(td):
    return td.days, td.seconds//3600, (td.seconds//60)%60