Zajímavé: https://github.com/stub42/pytz/blob/master/tz/europe
# Czech Republic / Czechia # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Czech 1945 only - Apr 8 2:00s 1:00 S Rule Czech 1945 only - Nov 18 2:00s 0 - Rule Czech 1946 only - May 6 2:00s 1:00 S Rule Czech 1946 1949 - Oct Sun>=1 2:00s 0 - Rule Czech 1947 only - Apr 20 2:00s 1:00 S Rule Czech 1948 only - Apr 18 2:00s 1:00 S Rule Czech 1949 only - Apr 9 2:00s 1:00 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Prague 0:57:44 - LMT 1850 0:57:44 - PMT 1891 Oct # Prague Mean Time 1:00 C-Eur CE%sT 1944 Sep 17 2:00s 1:00 Czech CE%sT 1979 1:00 EU CE%sT # Use Europe/Prague also for Slovakia. Takže ten default je asi PMT - Prague Mean Time z roku 1891? :) PM Dne 26. července 2017 17:32 Daniel Milde <dan...@milde.cz> napsal(a): > Ahoj, > ještě doplním proč to tak je: > > >>> tz = pytz.timezone('Europe/Prague') > > pytz neví, jaký offset má použít, protože timezone Europe/Prague může být > +1 nebo +2 (letní čas). > Spadne proto do nějakého divného defaultu, který je PMT+0:58:00 STD :) > > Teprve když timezonu svážeme s konrétním datumem přes localize, nastaví > pytz správný offset. > > Dan > > Dne 26.7.2017 v 09:47 Vláďa Macek napsal(a): > > Dejte si bacha. > > Pekne me dnes pokousaly timezony a to jsem si myslel, ze se vyznam. :-) > > Django 1.11 preslo nejak vic na vyuzivani `pytz`, ktere dodava casove zony > s vice informacemi a datetime.replace, ktere jsem do te doby nespravne > pouzival, se mi fakt nevyplatilo... > > >>> import datetime > >>> import pytz > > >>> tz = pytz.timezone('Europe/Prague') > >>> tz > <DstTzInfo 'Europe/Prague' PMT+0:58:00 STD> > >>> # Strasidelne. :-) To mam nekde chybu, ne... > >>> d_praha_naivni = datetime.datetime(2017, 6, 8, 10, 19, 52) > >>> d_praha_vnuceno_blbe = d_praha_naivni.replace(tzinfo=tz) > > >>> d_utc_naivni = datetime.datetime.strptime('2017-06-08T08:19:52+00:00', > '%Y-%m-%dT%H:%M:%S+00:00') > >>> d_utc_naivni > datetime.datetime(2017, 6, 8, 8, 19, 52) > > >>> d_utc_vnuceno_blbe = d_utc_naivni.replace(tzinfo=pytz.utc) > >>> d_utc_vnuceno_blbe > datetime.datetime(2017, 6, 8, 8, 19, 52, tzinfo=<UTC>) > > >>> d_praha_vnuceno_blbe == d_utc_vnuceno_blbe > False > >>> # Pritom stejny cas... lepe: > > >>> d_praha = tz.localize(d_praha_naivni) > >>> d_praha > datetime.datetime(2017, 6, 8, 10, 19, 52, tzinfo=<DstTzInfo > 'Europe/Prague' CEST+2:00:00 DST>) > > >>> d_utc = pytz.utc.localize(d_utc_naivni) > >>> d_utc > datetime.datetime(2017, 6, 8, 8, 19, 52, tzinfo=<UTC>) > > >>> d_praha == d_utc > True > >>> # Konecne mi to uznal. :-) > > >>> d_utc == d_utc_vnuceno_blbe > True > >>> # Vnuceni UTC pomoci replace() zjevne vadi min... :-> > > > > _______________________________________________ > Python mailing listpython@py.czhttp://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz > > > > _______________________________________________ > Python mailing list > python@py.cz > http://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz >
_______________________________________________ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz