【问题标题】:python : in which timezone is it a specific time right now?python:现在是哪个时区的特定时间?
【发布时间】:2010-05-11 19:15:43
【问题描述】:

我有来自所有时区的用户,我想在每个用户各自的时区的早上 8 点左右发送警报。

我需要一个每小时运行一次的 python 脚本 [在一个 cron 作业中],我需要找出现在是上午 8 点的哪个时区,我可以使用该信息来选择必须接收警报的用户。

我该怎么做呢?好像有gmt+14到gmt-12也就是27个时区,一天只有24小时!

【问题讨论】:

    标签: python timezone


    【解决方案1】:

    Python 定义了一个 tzinfo 类,它为您提供时区的偏移量,但它不提供该类的任何具体实现。有一些可用的实现,我已经成功使用了python-dateutil。显然,您需要为每个用户设置一个时区;在每小时(或每半小时)运行时,采用当前 UTC 时间并将其 tzinfo 成员设置为 UTZ 时区;然后使用astimezone函数依次转换为每个用户的时区,并与8:00左右的某个范围进行比较。

    【讨论】:

    • 半小时一次可能就足够了,但如果你真的想准确一点,你必须每季度一次,至少在尼泊尔经过 8:00 窗口的时候。他们不想偏袒印度或中国,所以他们介于两者之间。
    【解决方案2】:

    某些时区以半小时为增量,例如 Newfoundland Time 是 UTC-3:30。您应该能够获取所有偏移量并进行适当的数学运算以获取所有通知时间。不过,我会提前安排时间,否则您的通知可能会在夏令时营业等时出错。所以每 24 小时,您将创建一个时间列表,以便为下一个发送通知> 一天并适当地指示您的调度程序。

    【讨论】:

    • 甚至是一刻钟(例如尼泊尔)
    • 一个完美的例子,说明为什么我们应该依赖库来找出极端情况;)
    • 你知道有什么图书馆可以帮助这个案例吗?
    • 我不介意按小时发送半小时增量或四分之一小时增量。对于 ex UTC-3:30 可以与 UTC-3 一起使用
    猜你喜欢
    • 2012-06-12
    • 2011-05-03
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    相关资源
    最近更新 更多