[python] Tip: Slusne me dnes pokousaly timezony

Petr Messner petr.messner na gmail.com
Středa Červenec 26 15:08:29 CEST 2017


Tak dokumentace je tady: http://pythonhosted.org/pytz/ :)

Jinak co se mi osvědčilo je používat všude UTC a teprve v UI těsně před
zobrazením to převést do uživatelovo zóny (u javascriptových aplikací
nejlépe přímo v prohlížeči).

(Ano, PostgreSQL umí timezony, ale jiné technologie/serializace ne anebo
mezi tím není hladký přechod.)

PM

Dne 26. července 2017 14:52 Jakub Vysoky <jakub na borka.cz> napsal(a):

> Taky to tak nekde pouzivam. Pritom bych dal ruku do ohne, ze to bylo
> vycucly z nejaky dokumentace.
>
> Asi to nebyla dokumentace, ale stackoverflow :)
>
> Dik!
>
> On Wed, 26 Jul 2017 at 09:47, Vláďa Macek <macek na sandbox.cz> wrote:
>
>> 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... :->
>>
>>
>> ---------------------------------------------------------------------------
>>
>> Freehosting PIPNI - http://www.pipni.cz/
>>
>> _______________________________________________
>> Python mailing list
>> python na py.cz
>> http://www.py.cz/mailman/listinfo/python
>>
>> Visit: http://www.py.cz
>
> --
> Jakub Vysoky
>
> mob: +420 605 852 377 <605%20852%20377>
> jab: jakub.vysoky na gmail.com
> twit: https://twitter.com/kvbik
>
> _______________________________________________
> 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/39633d3e/attachment-0002.html>


Další informace o konferenci Python