擅长:python、mysql、java
<p><a href="http://en.wikipedia.org/wiki/EST" rel="nofollow">EST</a>可以表示两个不同的时区:欧洲夏季时间或东部标准时间。因此,日期时间字符串,如<code>08/07/2011 04:22 EST</code>是不明确的-没有可靠的方法来正确地将这些字符串转换为时区感知的日期时间。在</p>
<p>如果你愿意尝试一个可能正确的答案,那么
您可以在缩写词<code>EST</code>和时区名称之间生成映射,在有效的时区中随机选择,然后
然后使用该时区构建一个支持时区的日期时间:</p>
<pre><code>import dateutil.tz as dtz
import pytz
import datetime as dt
import collections
import random
timezones = collections.defaultdict(list)
for name in pytz.common_timezones:
timezone = dtz.gettz(name)
try:
now = dt.datetime.now(timezone)
except ValueError:
# dt.datetime.now(dtz.gettz('Pacific/Apia')) raises ValueError
continue
abbrev = now.strftime('%Z')
timezones[abbrev].append(name)
date_string, tz_string = '10/07/2011 04:22 CEST'.rsplit(' ', 1)
date = dt.datetime.strptime(date_string, '%m/%d/%Y %H:%M')
print(date)
# 2011-10-07 04:22:00
tz = pytz.timezone(random.choice(timezones[tz_string]))
print(tz)
# Europe/Oslo
date = tz.localize(date)
print(date)
# 2011-10-07 04:22:00+02:00
</code></pre>