您的位置:首页 > 编程语言 > Python开发

python处理datetime类型的时区转换

2014-12-31 18:25 537 查看
需求:数据库库中的数据是按照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) 替代
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: