纯python处理时区的转换

http://blog.csdn.net/niyingxunzong/article/details/12978639

首先要明白python的datetime对象有两种类型,而Python的datetime可以处理2种类型的时间,分别为offset-naive和offset-aware。前者是指没有包含时区信息的时间,后者是指包含时区信息的时间,只有同类型的时间才能进行减法运算和比较。

#-*- coding=cp936 -*-
from datetime import timedelta,tzinfo
import datetime

ZERO_TIME_DELTA = timedelta(0)
LOCAL_TIME_DELTA = timedelta(hours=8) # 本地时区偏差

class UTC(tzinfo):
    """实现了格林威治的tzinfo类"""
    def utcoffset(self, dt):
        return ZERO_TIME_DELTA

    def dst(self, dt):
        return ZERO_TIME_DELTA

class LocalTimezone(tzinfo):
    """实现北京时间的类"""
    def utcoffset(self, dt):
        return LOCAL_TIME_DELTA

    def dst(self, dt):
        return ZERO_TIME_DELTA

    def tzname(self, dt):    #tzname需要返回时区名
        return '+08:00'

print datetime.datetime.now(UTC())    #UTC时间  差八个小时
print datetime.datetime.now(LocalTimezone())   #根据本地  时区 生成offset-aware类的datetime对象
print type(datetime.datetime.now(LocalTimezone()))

print datetime.datetime.now()    #北京时间       一旦生成了一个offset-naive类型的datetime对象
print datetime.datetime.now().replace(tzinfo=UTC())   #   调用replace(tzinfo=UTC())即可转换成offset-aware类型


print datetime.datetime.now().replace(tzinfo=LocalTimezone()).astimezone(UTC())   #时区转换,


print '----------------------------------------------'
print datetime.datetime.utcnow()
#讲一个 已知时区的datetime类转换成UTC()的日期
datetime_test = datetime.datetime(2013,10,23,20,44,11).replace(tzinfo=LocalTimezone()).astimezone(UTC())
print datetime_test
print '---------------------------------'

结果:

2014-02-19 07:38:07.328000+00:00
2014-02-19 15:38:07.328000+08:00
<type 'datetime.datetime'>
2014-02-19 15:38:07.328000
2014-02-19 15:38:07.328000+00:00
2014-02-19 07:38:07.328000+00:00
----------------------------------------------
2014-02-19 07:38:07.328000
2013-10-23 12:44:11+00:00
---------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值