需求:数据库库中的数据是按照UTC时间进行存储 所以取出来显示给用户 需要处理一下时区
关于pytz包:http://pytz.sourceforge.net/
>>>import pytz, datetime
>>>tz0 = pytz.timezone('Europe/Brussels') # 获取比利时时区
<DstTzInfo 'Europe/Brussels' WET0:00:00 STD>
>>>tz = pytz.timezone('Asia/Shanghai') # 获取上海时区
<DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>
# 数据库取出的时间 转换成datetime类型
>>>utcdate = datetime.datetime.strptimet('2012-12-12 00:00:00', "%Y-%m-%d %H:%M:%S")
datetime.datetime(2012, 12, 12, 0, 0)
# replace是增加datetime上的时区属性
>>>utcdate = utcdate.replace(tz0)
datetime.datetime(2012, 12, 12, 0, 0, tzinfo=<DstTzInfo 'Europe/Brussels' WET0:00:00 STD>)
# 通过astimezone进行时区转换
>>>newdate = utcdate.astimezone(tz)
datetime.datetime(2012, 12, 12, 8, 0, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>)
# 最后把得到的时区转成字符串
>>>newdate.strftime("%Y-%m-%d %H:%M:%S")
'2012-12-12 08:00:00'
2015年01月15日更新
上述代码中
utcdate.replace(tz0) 如果使用上海时区 会出现6分钟的问题
可以使用
tz0.localize(utcdate) 替代