2012-06-08 32 views
3

在DB中,我有表(用户),它为该用户存储时区(作为字符串值,例如:“欧洲/奥斯陆”)。 现在,我需要获得所有用户,当地时间现在是例如:9AM。pytz:获取所有时区,现在具体时间

有没有什么好的方法来做到这一点,而不是让所有的用户循环?如果pytz能够返回时区列表,那么现在的时间是9AM,我可以使用简单的IN SQL语句。

回答

10
import datetime 
import pytz 

now = datetime.now(pytz.utc) 
# datetime.datetime(2012, 6, 8, 10, 31, 58, 493905, tzinfo=<UTC>) 

[tz for tz in pytz.common_timezones_set if now.astimezone(pytz.timezone(tz)).hour == 9] 
# ['Atlantic/Cape_Verde'] 

[tz for tz in pytz.common_timezones_set if now.astimezone(pytz.timezone(tz)).hour == 12] 
# returns a list of 45 timezones, 'Europe/Oslo' included 
+0

是的,就是这样! –

+0

太棒了!正是我想要的。 – aqs