3

在数据库中,我有表(用户),它为该用户存储时区(作为字符串值,例如:“欧洲/奥斯陆”)。现在,我需要获取所有用户,例如现在的当地时间:上午 9 点。

有没有什么好的方法可以做到这一点,而不需要对所有用户进行循环?如果pytz能够返回时区列表,现在时间是上午 9 点,我可以使用简单的INSQL 语句。

4

1 回答 1

12
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
于 2012-06-08T10:32:49.290 回答