[python] Tip: Slusne me dnes pokousaly timezony

Vláďa Macek macek na sandbox.cz
Středa Červenec 26 09:47:21 CEST 2017


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... :->

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


Další informace o konferenci Python