【问题标题】:python time module: daylight savingspython时间模块:夏令时
【发布时间】:2014-03-23 20:28:00
【问题描述】:

我对 python 的 time 模块有疑问(不是询问datetimepytz 或任何其他模块)。

如何使用time 模块确定我当前所在的地点和日期当前是否是夏令时 (DST)?

The documentation 在这个话题上似乎含糊不清。根据我对文档字符串措辞方式的解释,如果当前是标准时间(冬季),我会认为 time.daylight 将为 0,如果当前是夏令时(夏季),则为非零:Nonzero if a DST timezone is defined.

但是,time.daylight 似乎不是这样做的!目前这里是冬季(标准)时间,但是time.daylight == 1

如何使用time 模块来确定当前是否为夏令时?或者这是不可能的?谢谢!

【问题讨论】:

标签: python datetime time timezone dst


【解决方案1】:

如何使用time 模块确定我当前所在的地点和日期当前是否是夏令时 (DST)?

假设您的计算机设置为正确的时区:

import time

is_dst = time.daylight and time.localtime().tm_isdst > 0 

【讨论】:

    【解决方案2】:

    这适用于我的系统。也许您的操作系统设置为夏令时?

    【讨论】:

    • “我的操作系统设置为夏令时”是什么意思?如果我使用此处描述的高级模块 stackoverflow.com/a/12015245/402807 ,它会正确地将我的时区报告为“PST”(太平洋标准时间)
    • 您的系统可能会自动设置夏令时,也可能让您手动设置。但是如果其他模块转储了正确的信息,这不是原因。
    • 澄清一下:当您说“这适用于我的系统”时,您是说所有这些事情对您来说都是正确的:(1)您生活在一个确实使用 DST 的地理区域(例如美国大陆),(2)目前不是夏令时(你在冬天),和(3)time.daylight == 0
    • 目前我在马来西亚,time.daylight == 0 是正确的。连接到德国的机器时time.daylight == 1 不正确。
    【解决方案3】:

    pytz 是在 python 中一致地处理时区、本地时间转换和 DST 的好方法。 很抱歉没有发布实际的使用示例,但最好通过模块文档了解 DST 转换的各种陷阱和用例。

    【讨论】:

    • 谢谢,但在我的问题中,我在第一句话中明确表示我不是在问pytz。我同意,对于大多数实际情况,pytz 是可行的方法,但我对time 模块特别好奇,因此提出了这个问题。
    • 啊。对不起,我第一次读你的帖子一定有点快。
    猜你喜欢
    • 2012-07-09
    • 2011-02-22
    • 2011-10-22
    • 2017-07-11
    • 2012-04-07
    • 2016-02-06
    • 2017-11-20
    • 1970-01-01
    相关资源
    最近更新 更多