我想编写一个小函数,可以计算任何时区的任何给定日期的小时数。显然的方法是计算一天中第一个瞬间和第二天之间的小时数。不幸的是,无论我选择哪一天,这种方法总是认为一天有24个小时。
在英国,时钟在3月的凌晨1点提前1小时。这意味着2021年3月28日应该有23个小时。那天从凌晨1点到2点的时间范围将不存在。
同样,在2021年10月31日,时钟在凌晨1点被推回,所以那天将有25个小时。午夜到凌晨1点的时间范围将在那一天发生两次。
在英国,时钟在3月的凌晨1点提前1小时。这意味着2021年3月28日应该有23个小时。那天从凌晨1点到2点的时间范围将不存在。
同样,在2021年10月31日,时钟在凌晨1点被推回,所以那天将有25个小时。午夜到凌晨1点的时间范围将在那一天发生两次。
import datetime
import pytz
# When do the clocks change?
# https://www.gov.uk/when-do-the-clocks-change
day0=datetime.datetime(2021,3,28, tzinfo=pytz.timezone("Europe/London"))
day1=datetime.datetime(2021,3,29, tzinfo=pytz.timezone("Europe/London"))
delta = day1-day0
print(delta)
hours = delta / datetime.timedelta(hours=1)
print(hours)
这个脚本给出的输出似乎不正确:
1 day, 0:00:00
24.0
有没有更简单的方法来获取特定日期中的小时数,以便得到正确的答案?
理想情况下,这应该能够考虑到夏令时、闰年甚至是闰秒。