【问题标题】:Test if datetime.datetime is in daylight savings with .dst() function not returning value with pytz timezone使用 .dst() 函数测试 datetime.datetime 是否处于夏令时,不使用 pytz 时区返回值
【发布时间】:2018-01-25 22:47:05
【问题描述】:

我正在尝试测试任意本地化日期时间对象是否处于夏令时。

这与许多已经提出的问题类似。例如。 (Daylight savings time in Python)

在这些板上,测试日期时间是否在 DST 中的一种方法是使用内置函数 .dst()。这被包装成 bool 之类的:

if bool(mydatetimeobject.dst()):
    print ("date is DST!")

但是,每当我创建一个任意日期时间并传递一个 tztimezone 时,.dst() 函数都不会报告任何内容。好像没有设置时区!

检查此代码 sn-p 以查看问题:

>>> from datetime import datetime
>>> import pytz
>>> localtime = pytz.timezone('US/Central')

>>> mydate = datetime(2004,3,1)  # day in standard time
>>> localtime.localize(mydate)
datetime.datetime(2004, 3, 1, 0, 0, tzinfo=<DstTzInfo 'US/Central' CST-1 day, 18:00:00 STD>)
>>> mydate.dst()

>>> mydate = datetime(2004,5,1)  #day in daylight time
>>> localtime.localize(mydate)
datetime.datetime(2004, 5, 1, 0, 0, tzinfo=<DstTzInfo 'US/Central' CDT-1 day, 19:00:00 DST>)
>>> mydate.dst()
>>> bool(mydate.dst())
False

【问题讨论】:

    标签: python datetime pytz


    【解决方案1】:

    它有效,但您需要将localtime.localize() 结果分配给一个变量并进行比较。现在您只需显示输出并检查原始日期时间的 .dst()。

    a = localtime.localize(mydate)
    bool(a.dst())
    

    返回 True(假设 mydate 在 DST 中)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-17
      • 2011-09-30
      • 2011-02-09
      • 2013-11-15
      • 2019-04-06
      • 2016-10-15
      • 1970-01-01
      • 2018-08-25
      相关资源
      最近更新 更多