博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
纯python处理时区的转换
阅读量:2189 次
发布时间:2019-05-02

本文共 1714 字,大约阅读时间需要 5 分钟。

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

#-*- coding=cp936 -*-from datetime import timedelta,tzinfoimport datetimeZERO_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_DELTAclass 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_testprint '---------------------------------'

结果:

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
---------------------------------

转载地址:http://ggwub.baihongyu.com/

你可能感兴趣的文章
剑指offer 25.二叉树中和为某一值的路径
查看>>
剑指offer 60. 不用加减乘除做加法
查看>>
Leetcode C++《热题 Hot 100-14》283.移动零
查看>>
Leetcode C++《热题 Hot 100-15》437.路径总和III
查看>>
Leetcode C++《热题 Hot 100-17》461.汉明距离
查看>>
Leetcode C++《热题 Hot 100-18》538.把二叉搜索树转换为累加树
查看>>
Leetcode C++《热题 Hot 100-21》581.最短无序连续子数组
查看>>
Leetcode C++《热题 Hot 100-22》2.两数相加
查看>>
Leetcode C++《热题 Hot 100-23》3.无重复字符的最长子串
查看>>
Leetcode C++《热题 Hot 100-24》5.最长回文子串
查看>>
Leetcode C++《热题 Hot 100-28》19.删除链表的倒数第N个节点
查看>>
Leetcode C++《热题 Hot 100-29》22.括号生成
查看>>
Leetcode C++《热题 Hot 100-47》236.二叉树的最近公共祖先
查看>>
Leetcode C++《热题 Hot 100-48》406.根据身高重建队列
查看>>
《kubernetes权威指南·第四版》第二章:kubernetes安装配置指南
查看>>
Leetcode C++《热题 Hot 100-49》399.除法求值
查看>>
Leetcode C++《热题 Hot 100-51》152. 乘积最大子序列
查看>>
Leetcode C++ 《第181场周赛-1》 5364. 按既定顺序创建目标数组
查看>>
Leetcode C++ 《第181场周赛-2》 1390. 四因数
查看>>
阿里云《云原生》公开课笔记 第一章 云原生启蒙
查看>>