DBには、そのユーザーのタイムゾーンを(文字列値として、たとえば「Europe/Oslo」として)格納するテーブル(User)があります。ここで、すべてのユーザーを取得する必要があります。ここで、現在の現地時間は例: 午前 9 時です。
すべてのユーザーをループさせずに、これを行う良い方法はありますか? タイムゾーンのリストを返すことができればpytz
、今のところ午前 9 時ですが、単純なIN
SQL ステートメントを使用できます。
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