擅长:python、mysql、java
<p>根据Carl Meyer在<a href="https://groups.google.com/forum/#!msg/django-users/rXalwEztfr0/QAd5bIJubwAJ" rel="noreferrer">Google Groups Answer</a>中的回答回答</p>
<p>造成这种差异的原因是,这不是将时区无关的datetime对象转换为时区感知对象的正确方法。</p>
<p>原因是:</p>
<blockquote>
<p>"A pytz timezone class does not represent a single offset from UTC, it
represents a geographical area which, over the course of history, has
probably gone through several different UTC offsets. The oldest offset
for a given zone, representing the offset from before time zones were
standardized (in the late 1800s, most places) is usually called "LMT"
(Local Mean Time), and it is often offset from UTC by an odd number of
minutes."</p>
</blockquote>
<p><em>(引用Google群组中引用的答案)</em></p>
<p>基本上,你应该:</p>
<pre><code>from datetime import datetime
import pytz
my_datetime = datetime(2015, 6, 11, 13, 30)
my_tz = pytz.timezone('America/Chicago')
good_dt = my_tz.localize(my_datetime)
print(good_dt)
</code></pre>
<p><code>out: 2015-06-11 13:30:00-05:00</code></p>