How to determine when DST starts or ends in a specific location in Python?(如何确定 DST 何时在 Python 中的特定位置开始或结束?)
问题描述
我正在寻找一种方法来确定我正在处理的 Python 脚本中给定时区的 DST 何时开始或结束.
I'm looking for a method of determining when DST starts or ends for a given timezone in a Python script I'm working on.
我知道 pytz 可以将我正在工作的 UTC 日期转换为本地时间,并且会考虑 DST,但是对于这个特定的应用程序 我需要知道转换点.
I know pytz can convert the UTC dates I'm working into localtime, and will take DST into account, however for this particular application I need to know the point of the changeover.
有什么建议吗?
推荐答案
你可以看看你正在使用的时区的 _utc_transition_times
成员.
You could have a look to the _utc_transition_times
memberof the timezone you're using.
>>> from pytz import timezone
>>> tz = timezone("Europe/Paris")
>>> print tz._utc_transition_times
[datetime.datetime(1, 1, 1, 0, 0), datetime.datetime(1911, 3, 10, 23, 51, 39), datetime.datetime(1916, 6, 14, 23, 0), datetime.datetime(1916, 10, 1, 23, 0), date
....
datetime.datetime(2037, 3, 29, 1, 0), datetime.datetime(2037, 10, 25, 1, 0)]
它将为您提供 DST 更改日期列表(DST 的开始和结束).
It will give you the list of the DST change dates (start and end of DST).
根据tzinfo.py的代码
According to the code of tzinfo.py
class DstTzInfo(BaseTzInfo):
'''A timezone that has a variable offset from UTC
The offset might change if daylight savings time comes into effect,
or at a point in history when the region decides to change their
timezone definition.
'''
# Overridden in subclass
_utc_transition_times = None # Sorted list of DST transition times in UTC
_transition_info = None # [(utcoffset, dstoffset, tzname)] corresponding
# to _utc_transition_times entries
因此,如果您将 _utc_transition_times
与 _transition_info
混合使用,您将获取所有需要的信息、日期、时间和偏移量来应用;)
So if you mix the _utc_transition_times
with _transition_info
you will grab all your needed informations, date, time and offset to apply ;)
这篇关于如何确定 DST 何时在 Python 中的特定位置开始或结束?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何确定 DST 何时在 Python 中的特定位置开始或结束?


基础教程推荐
- Python 中是否有任何支持将长字符串转储为块文字或折叠块的 yaml 库? 2022-01-01
- 在 Django Admin 中使用内联 OneToOneField 2022-01-01
- 比较两个文本文件以找出差异并将它们输出到新的文本文件 2022-01-01
- Kivy 使用 opencv.调整图像大小 2022-01-01
- matplotlib 设置 yaxis 标签大小 2022-01-01
- Python,确定字符串是否应转换为 Int 或 Float 2022-01-01
- 对多索引数据帧的列进行排序 2022-01-01
- 究竟什么是“容器"?在蟒蛇?(以及所有的 python 容器类型是什么?) 2022-01-01
- kivy 应用程序中的一个简单网页作为小部件 2022-01-01
- 在 Python 中将货币解析为数字 2022-01-01