[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