【发布时间】:2010-05-11 19:15:43
【问题描述】:
我有来自所有时区的用户,我想在每个用户各自的时区的早上 8 点左右发送警报。
我需要一个每小时运行一次的 python 脚本 [在一个 cron 作业中],我需要找出现在是上午 8 点的哪个时区,我可以使用该信息来选择必须接收警报的用户。
我该怎么做呢?好像有gmt+14到gmt-12也就是27个时区,一天只有24小时!
【问题讨论】:
我有来自所有时区的用户,我想在每个用户各自的时区的早上 8 点左右发送警报。
我需要一个每小时运行一次的 python 脚本 [在一个 cron 作业中],我需要找出现在是上午 8 点的哪个时区,我可以使用该信息来选择必须接收警报的用户。
我该怎么做呢?好像有gmt+14到gmt-12也就是27个时区,一天只有24小时!
【问题讨论】:
Python 定义了一个 tzinfo 类,它为您提供时区的偏移量,但它不提供该类的任何具体实现。有一些可用的实现,我已经成功使用了python-dateutil。显然,您需要为每个用户设置一个时区;在每小时(或每半小时)运行时,采用当前 UTC 时间并将其 tzinfo 成员设置为 UTZ 时区;然后使用astimezone函数依次转换为每个用户的时区,并与8:00左右的某个范围进行比较。
【讨论】:
某些时区以半小时为增量,例如 Newfoundland Time 是 UTC-3:30。您应该能够获取所有偏移量并进行适当的数学运算以获取所有通知时间。不过,我会提前安排时间,否则您的通知可能会在夏令时营业等时出错。所以每 24 小时,您将创建一个时间列表,以便为下一个发送通知> 一天并适当地指示您的调度程序。
【讨论】: