将时间增量转换为天、小时和分钟

2024-04-26 03:02:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有时间差。我想从中得到天,小时和分钟-要么是元组,要么是字典。。。我不担心。

这些年来,我一定用十几种语言做了十几次这样的工作,但是Python通常对所有事情都有一个简单的答案,所以我想在解决一些令人恶心的简单(但冗长)数学问题之前,我应该先问一下这里。

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

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

我说这不算DST是对的吗?如果不是,最简单的加/减一小时的方法是什么?


Tags: 答案语言字典数学物品事情持续时间元组
3条回答

这是一个有点紧凑,你得到的小时,分钟和秒在两行。

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

如果你有一个datetime.timedeltatdtd.days已经给了你想要的“天”。timedelta值将一天中的一小部分时间保持为秒(而不是直接以小时或分钟为单位),因此您必须执行“令人恶心的简单数学”,例如:

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

至于DST,我认为最好的方法是将两个datetime对象都转换为秒。这样系统会为您计算DST。

>>> m13 = datetime(2010, 3, 13, 8, 0, 0)  # 2010 March 13 8:00 AM
>>> m14 = datetime(2010, 3, 14, 8, 0, 0)  # DST starts on this day, in my time zone
>>> mktime(m14.timetuple()) - mktime(m13.timetuple())     # difference in seconds
82800.0
>>> _/3600                                                # convert to hours
23.0

相关问题 更多 >