需求:数据库库中的数据是按照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) 替代