<p>默认的<code>datetime</code>模块对时区的处理不是很好;除了当前机器的时区和UTC之外,基本上不支持它们。在</p>
<p>您必须使用一个外部库来实现这一点,或者手动处理时区偏移量。在</p>
<p>外部库选项:</p>
<ul>
<li><p>Use <a href="http://labix.org/python-dateutil#head-a23e8ae0a661d77b89dfb3476f85b26f0b30349c" rel="nofollow">^{<cd2>}</a>可以处理您想使用的任何日期和/或时间格式:</p>
<pre><code>from dateutil import parser
dt = parser.parse(s)
</code></pre></li>
<li><p><a href="http://pypi.python.org/pypi/iso8601/" rel="nofollow">^{<cd3>} library</a>只处理ISO 8601格式,其中包括相同格式的时区偏移量:</p>
<pre><code>import iso8601
datetimetext, tz = s.rsplit(None, 1) # only grab the timezone portion.
timezone = iso8601.iso8601.parse_timezone('{}:{}'.format(tz[:3], tz[3:]))
dt = datetime.strptime(datetimetext, '%a %b %d %H:%M:%S %Y').replace(tzinfo=timezone)
</code></pre></li>
</ul>
<p>每种方法的演示:</p>
<pre><code>>>> import datetime
>>> s = 'Fri Aug 17 12:34:00 2012 +0000'
>>> import iso8601
>>> timezone = iso8601.iso8601.parse_timezone('{}:{}'.format(tz[:3], tz[3:]))
>>> datetime.datetime.strptime(datetimetext, '%a %b %d %H:%M:%S %Y').replace(tzinfo=timezone)
datetime.datetime(2012, 8, 17, 12, 34, tzinfo=<FixedOffset '+00:00'>)
>>> from dateutil import parser
>>> parser.parse(s)
datetime.datetime(2012, 8, 17, 12, 34, tzinfo=tzutc())
</code></pre>