python处理datetime类型的时区转换

来源:互联网 发布:ubuntu如何搜索文件 编辑:程序博客网 时间:2024/05/16 07:53

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

0 0
原创粉丝点击