[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