[python] Tip: Slusne me dnes pokousaly timezony

Daniel Milde daniel na milde.cz
Středa Červenec 26 17:32:10 CEST 2017


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 list
> python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz

------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://www.py.cz/pipermail/python/attachments/20170726/e11ba0a0/attachment-0002.html>


Další informace o konferenci Python