Python 特定时区现在是否使用DST?

Python 特定时区现在是否使用DST?,python,time,timezone,pytz,Python,Time,Timezone,Pytz,如何让python脚本检查当前是否使用DST存储在变量中的特定时区? 我的服务器设置为UTC。 所以我有 比如说 zonename = Pacific/Wallis 我想运行关于它现在是否正在使用DST的查询,并将回复返回为true或false from pytz import timezone from datetime import datetime zonename = "Pacific/Wallis" now = datetime.now(tz=timezone(zonename))

如何让python脚本检查当前是否使用DST存储在变量中的特定时区? 我的服务器设置为UTC。 所以我有 比如说

zonename = Pacific/Wallis
我想运行关于它现在是否正在使用DST的查询,并将回复返回为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
表示无DST,
1
表示DST,
-1
表示未设置时区

我的(独立的)解决方案非常相似(包括变量名)。@J.F.Sebastian:“应该有一种——最好只有一种——明显的方法来实现它。”;-)这就是我喜欢Python的原因:)如果时区当前不在DST中,如何区分tm_isdst=0和根本不使用DST的时区?In:datetime.datetime.now(pytz.timezone('Asia/Kolkata')).timetuple().tm_isdst输出:0 In:datetime.datetime.now(pytz.timezone('Australia/Melbourne')).timetuple().tm_isdst输出:0