<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p>Ahoj,<br>
ještě doplním proč to tak je:</p>
<p>>>> tz = pytz.timezone('Europe/Prague')</p>
<p>pytz neví, jaký offset má použít, protože timezone Europe/Prague
může být +1 nebo +2 (letní čas). <br>
Spadne proto do nějakého divného defaultu, který je PMT+0:58:00
STD :)<br>
<br>
Teprve když timezonu svážeme s konrétním datumem přes localize,
nastaví pytz správný offset.</p>
<p>Dan<br>
</p>
<br>
<div class="moz-cite-prefix">Dne 26.7.2017 v 09:47 Vláďa Macek
napsal(a):<br>
</div>
<blockquote type="cite"
cite="mid:cb095779-a761-6f01-7d80-428c5ba44f2f@sandbox.cz">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<p> Dejte si bacha.</p>
<p> Pekne me dnes pokousaly timezony a to jsem si myslel, ze se
vyznam. :-)</p>
<p>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...</p>
<blockquote>
<p>>>> import datetime<br>
>>> import pytz<br>
<br>
>>> tz = pytz.timezone('Europe/Prague')<br>
>>> tz<br>
<DstTzInfo 'Europe/Prague' PMT+0:58:00 STD><br>
>>> # Strasidelne. :-) To mam nekde chybu, ne...</p>
>>> d_praha_naivni = datetime.datetime(2017, 6, 8, 10,
19, 52)<br>
>>> d_praha_vnuceno_blbe =
d_praha_naivni.replace(tzinfo=tz)<br>
<br>
>>> d_utc_naivni =
datetime.datetime.strptime('2017-06-08T08:19:52+00:00',
'%Y-%m-%dT%H:%M:%S+00:00')<br>
>>> d_utc_naivni<br>
datetime.datetime(2017, 6, 8, 8, 19, 52)<br>
<br>
>>> d_utc_vnuceno_blbe =
d_utc_naivni.replace(tzinfo=pytz.utc)<br>
>>> d_utc_vnuceno_blbe<br>
datetime.datetime(2017, 6, 8, 8, 19, 52, tzinfo=<UTC>)<br>
<br>
>>> d_praha_vnuceno_blbe == d_utc_vnuceno_blbe<br>
False<br>
>>> # Pritom stejny cas... lepe:<br>
<br>
>>> d_praha = tz.localize(d_praha_naivni)<br>
>>> d_praha<br>
datetime.datetime(2017, 6, 8, 10, 19, 52, tzinfo=<DstTzInfo
'Europe/Prague' CEST+2:00:00 DST>)<br>
<br>
>>> d_utc = pytz.utc.localize(d_utc_naivni)<br>
>>> d_utc<br>
datetime.datetime(2017, 6, 8, 8, 19, 52, tzinfo=<UTC>)<br>
<br>
>>> d_praha == d_utc<br>
True<br>
>>> # Konecne mi to uznal. :-)<br>
<br>
>>> d_utc == d_utc_vnuceno_blbe<br>
True<br>
>>> # Vnuceni UTC pomoci replace() zjevne vadi min...
:-><br>
<br>
</blockquote>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
Python mailing list
<a class="moz-txt-link-abbreviated" href="mailto:python@py.cz">python@py.cz</a>
<a class="moz-txt-link-freetext" href="http://www.py.cz/mailman/listinfo/python">http://www.py.cz/mailman/listinfo/python</a>
Visit: <a class="moz-txt-link-freetext" href="http://www.py.cz">http://www.py.cz</a></pre>
</blockquote>
<br>
</body>
</html>