pytz:获取所有时区,现在是特定时间

Posted

技术标签:

【中文标题】pytz:获取所有时区,现在是特定时间【英文标题】:pytz: getting all timezones, where now is specific time 【发布时间】:2012-06-12 09:51:34 【问题描述】:

在 DB 中,我有表 (User),它为该用户存储时区(作为字符串值,例如:“Europe/Oslo”)。 现在,我需要获取所有用户,例如现在的当地时间:上午 9 点。

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

【问题讨论】:

【参考方案1】:
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

【讨论】:

太棒了!正是我想要的。

以上是关于pytz:获取所有时区,现在是特定时间的主要内容,如果未能解决你的问题,请参考以下文章

pytz 时区的 STD 偏移量

如何使用 pytz 从时区字符串中获取 UTC 偏移量?

如何获取 pytz 时区的通用名称,例如。美国/纽约的 EST/EDT

导入 pytz 失败时如何获取太平洋时区的当前时间?

python 通过pytz模块进行时区的转换,获取指定时区的时间

使用 pytz 获取时区的国家代码?