Python 特定时区现在是否使用DST?
如何让python脚本检查当前是否使用DST存储在变量中的特定时区? 我的服务器设置为UTC。 所以我有 比如说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))
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