【问题标题】:Handling Daylight Saving Time处理夏令时
【发布时间】:2019-12-16 04:16:30
【问题描述】:

在 Python 3.x 中,我想捕获当前时间及其时区,然后将其转换为 Unix 时间戳并发送到服务器。

我尝试过各种库,例如pytzarrowmomentpendulum,但我不确定如何处理夏令时 (DST)。目前,我正在使用time.tzname 获取时区信息,但它专门在 DST 中显示印度。实际上,印度从不遵循 DST。

【问题讨论】:

  • 欢迎来到 SO!还请添加一些最小代码sn-p。
  • Unix 时间戳始终基于 UTC。因此,如果您只想将当前时间作为 Unix 时间戳,只需直接获取当前 UTC 时间。无需涉及时区或 DST。见stackoverflow.com/q/16755394/634824

标签: python-3.x time timezone


【解决方案1】:

pytz 应该工作得很好。您需要使用该库中的函数dst() 来检查时区是否受夏令时影响。

https://medium.com/@nqbao/python-timezone-and-daylight-savings-e511a0093d0

从上面的链接:

>>> import pytz
>>> pst = pytz.timezone("US/Pacific")
>>> pst.localize(datetime(2017, 10, 1)).dst()
datetime.timedelta(0, 3600)
>>> pst.localize(datetime(2017, 12, 1)).dst()
datetime.timedelta(0)

了解偏移天真和偏移感知日期时间将使您的生活更轻松。

【讨论】:

  • @Csaba_Nemeth 感谢您的意见。请编辑您的答案并引用您引用的网站的基本部分。如果您添加一个最小的工作代码 sn-p,它也可能会有所帮助。
【解决方案2】:

这有助于我使用 time.tzname

解决问题
    if time.tzname[1] is None or time.tzname[0] == time.tzname[1]:
        timezone = time.localtime().tm_zone
            # no DST
            timezone = time.tzname[0]
        else:

            # we're in DST
            timezone = time.tzname[1]

【讨论】:

    猜你喜欢
    • 2013-03-18
    • 2022-07-20
    • 2019-09-29
    • 2012-11-21
    • 2015-04-09
    • 2012-11-07
    • 2017-03-17
    • 2018-04-18
    • 2016-10-05
    相关资源
    最近更新 更多