2016-09-21 59 views
2

我需要帮助解决与Python 3这个问题。我需要知道给定的日期,例如2017 06 02,是否在夏令时期或不。在Python中如何检查给定时间是否在夏令时期间?

我在这里和谷歌上寻找答案。但我发现基本上只是在当前日期解决这个问题。为了修改这些例子以满足我的需求,这对我来说太困难了:/不幸的是我对Python还没有那么高效。

完美的解决方案将会成为错误的答案。然后,我将能够继续我的逻辑。

编辑: 正如我所说,我在这里找到了一些解决方案。但他们都用当前时间来解决这个问题。我需要知道未来或过去的某个日期是否在夏令时期间。问题是,我是一名初级,并修改我发现我的需求对我来说太难了。

+0

[Python夏令时]的可能重复(http://stackoverflow.com/questions/2881025/python-daylight-savings-time) – techydesigner

+0

将会有一个(如果过渡时间不是午夜,可能会有两个)每年的日期在知道日期没有提供足够的证据来确定是否是夏令时。另外,在您倒退的那一天,当天将有一个小时知道当地时间不会告诉您日间节能时间是否有效。 –

+0

因此,您应该使用['pytz'](http://pytz.sourceforge.net/)并遵循他们的建议,“处理时间的首选方式是始终以UTC工作,仅在生成时才转换为本地时间输出将被人类读取。“ –

回答

0
import time # imports the time module 
time.localtime().tm_isdst # localtime() returns a tuple 

当DST不生效时,值为0。

当DST有效时,值为1。

当DST未知时,值为-1。

+1

谢谢。好吧,据我了解,这个例子适用于当前日期。但是如何与未来或过去的日期一起使用? –

+0

@SimonLickus我不确定。也许阅读官方文档? – techydesigner

2

好的,我想我自己设法做到了这一点。首先,我写了这个功能:

import time 

def is_dst(date): 
    return bool(time.localtime(date).tm_isdst) 

接下来我真或假像这样:

is_dst(time.mktime(MyDateObject.timetuple()))) 

我敢肯定,这不是最好的解决办法,因为我是一个总的Python小白,但它是为我工作。所以现在从这一点我可以继续我的逻辑。

相关问题