2015-06-30 11 views
5

Czy istnieje sposób, aby sprawdzić, czy określona strefa czasowa jest zapisana w świetle dziennym w określonej przeze mnie dacie?Jak ustalić, czy data określona w danej strefie czasowej w przeszłości jest zapisana w świetle dziennym, czy nie w pythonie?

test_dt = datetime(year=2015, month=2, day=1) 
    pst = pytz.timezone('America/Los_Angeles') 
    test_dt = pst.localize(test_dt) 

    # should return False 
    is_day_light_saving(test_dt)   
+0

Gdzie jest strefa czasowa? –

+0

Powinna być dowolna, ale przykładem jest "America/Los_Angeles" – Kevin

+0

możliwy duplikat [czasu letniego Pythona] (http://stackoverflow.com/questions/2881025/python-daylight-savings-time) –

Odpowiedz

5

Wystarczy zadzwonić the datetime.dst() method:

def is_summer_time(aware_dt): 
    assert aware_dt.tzinfo is not None 
    assert aware_dt.tzinfo.utcoffset(aware_dt) is not None 
    return bool(aware_dt.dst()) 

Przykład:

#!/usr/bin/env python 
from datetime import datetime 
import pytz # $ pip install pytz 

naive = datetime(2015, 2, 1) 
pacific = pytz.timezone('America/Los_Angeles') 
aware = pacific.localize(naive, is_dst=None) 

print(is_summer_time(aware)) 

Jest to odpowiednik:

bool(pytz.timezone('America/Los_Angeles').dst(datetime(2015, 2, 1), is_dst=None)) 
-1

Z mojego doświadczenia wynika, dane stref czasowych jest łatwiej rozpatrywane ti pandas wrażliwy na mezone.Timestamp() niż datetime. Jestem prawie pewien, że wrażliwość strefy czasowej uwzględnia czas letni od daty. Łatwo jest przekonwertować datetime na pandas.timestamp(), najpierw konwertując go na numpy.datetime64.

Timestamp(numpy.datetime64('2012-05-01T01:00:00.000000')) 

http://wesmckinney.com/blog/easy-high-performance-time-zone-handling-in-pandas-0-8-0/

python pandas TimeStamps to local time string with daylight saving

Converting between datetime, Timestamp and datetime64

Ponadto można spróbować patrząc na kodzie źródłowym pandy i zastanawianie się, jak to wywnioskować informacje tz. https://github.com/pydata/pandas/blob/master/pandas/src/datetime/np_datetime.c

Powiązane problemy