python: в каком часовом поясе сейчас определенное время? - PullRequest
3 голосов
/ 11 мая 2010

У меня есть пользователи из всех часовых поясов, и я хочу разослать оповещения около 8:00 в каждом часовом поясе каждого пользователя.

Мне нужен скрипт на Python, который запускается каждый час [в задании cron], и мне нужно выяснить, в каком часовом поясе сейчас 8:00, и я могу использовать эту информацию, чтобы выбрать пользователей, которые должны получать предупреждения.

как мне это сделать? Похоже, что gmt + 14 к gmt-12, то есть 27 часовых поясов, и есть только 24 часа в день!

Ответы [ 2 ]

1 голос
/ 11 мая 2010

Python определяет класс tzinfo, который дает вам смещение часового пояса, но он не предоставляет какой-либо конкретной реализации класса. Доступно несколько реализаций, я успешно использовал python-dateutil . Очевидно, вам понадобится часовой пояс для каждого пользователя; при ежечасном (или получасовом) запуске взять текущее время UTC и установить для его члена tzinfo часовой пояс UTZ; затем используйте функцию astimezone для преобразования в часовой пояс каждого пользователя по очереди и сравните с некоторым диапазоном около 8:00.

0 голосов
/ 11 мая 2010

Некоторые часовые пояса с шагом в полчаса, например, Время Ньюфаундленда - это UTC-3: 30. Вы должны быть в состоянии получить все смещения и сделать соответствующую математику, чтобы получить все времена уведомления. Хотя я планировал бы это заранее, в противном случае ваши уведомления могут быть неправильными при переходе на летнее время и т. Д. Таким образом, каждые 24 часа вы будете создавать список раз для отправки уведомлений для next день и проинструктируйте вашего планировщика соответствующим образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...