我应该如何让我的Python脚本检查一个存储在变量中的特定时区目前是否使用夏令时?我的服务器设置为UTC。例如,我有:
zonename = Pacific/Wallis
我想运行查询以确定当前是否使用夏令时,并希望回复返回true或false。
from pytz import timezone
from datetime import datetime
zonename = "Pacific/Wallis"
now = datetime.now(tz=timezone(zonename))
dst_timedelta = now.dst()
### dst_timedelta is offset to the winter time,
### thus timedelta(0) for winter time and timedelta(0, 3600) for DST;
### it returns None if timezone is not set
print "DST" if dst_timedelta else "no DST"
另一种选择是使用:
now.timetuple().tm_isdst
值可以为以下三个之一:0
表示无夏令时,1
表示使用夏令时,-1
表示未设置时区。
Python 3.9添加了zoneinfo模块,用于替换pytz。以下是现代Python版本的新更新版本。
from zoneinfo import ZoneInfo
from datetime import datetime
bool(datetime.now(tz=ZoneInfo("America/Chicago")).dst())