前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python utc转化时间

Python utc转化时间

作者头像
py3study
发布2020-01-08 11:17:15
2.1K0
发布2020-01-08 11:17:15
举报
文章被收录于专栏:python3

最近在开发项目的时候, 遇到了时区, 本地时间和UTC糅杂的情况, 研究之后做一些分享.

UTC Universal Time Coordinated  又叫协调世界时,  UTC用数值记录了时间. 时间记录的是0时区从1972年开始共计走过了多少秒.  所以本地时间与UTC时间的转换需要考虑时差. 

一般说来, UTC时间的计算不外乎三种情况.

1: UTC  <-----> UTC

2: UTC  -----> LocalTime

3: LocalTime  ------>  UTC

第一种情况,处理比较简单, 差值就表示两个时间相差的秒数.   

比如 utc1 = 1406869066, utc2 =  1406869070  相差4, 也就是这两个时间相差4秒.

==========

第二种情况,  可以利用编程语言中自带的包函数,  比如python的gmtime.

代码语言:javascript
复制
    time = '1407391625'
    print gmtime(float(time))

输出:

代码语言:javascript
复制
time.struct_time(
tm_year=2014, 
tm_mon=8, 
tm_mday=7, 
tm_hour=6, 
tm_min=7, 
tm_sec=5, 
tm_wday=3, 
tm_yday=219, 
tm_isdst=0
)

这样就把日期转换成方便识别的时期, 但注意, 这个日期是0时区的时刻, localtime还需要加减时区, 比如北京在东八区,那么时差为8小时, 所以此处的小时应该是14点, 而不是6点.

===========

第三种情况

需要特别注意, 因为不同的函数,处理的结果也是不相同的。

代码语言:javascript
复制
<span style="font-size:18px;">import calendar
import time
import datetime
d = datetime.datetime(2010, 10, 10)
calendar.timegm(d.timetuple())
1286668800
time.mktime(d.timetuple())
1286640000.0
 </span>

因为calendar.timegm默认这里的2010-10-10 00:00:00是0时区的时刻,而time.mktime则认为这个是你系统的时间,所以会自动处理时差!比如北京时间东八区,这里time.mktime会认为0时区时间是2010-10-09 16:00:00. 

所以在使用函数时候,要明白自己用来计算的时间到底是哪个时区的。以下以time.mktime来讨论

localTime ± 时差  = UTC时间. 

代码语言:javascript
复制
<span style="font-size:18px;">    time = '2014-08-07-01-00-00'
    format_time = strptime(time, "%Y-%m-%d-%H-%M-%S")   # 将字符串时间转为标准格式时间
    utc_time = mktime(format_time)
    print utc_time</span>

输出:

1407391407.0

**** 

需要注意的是, mktime会自动获取本机时区, 而帮我计算时差. 所以本地时间转换为utc很方便,  但如果出现了这种情况: 你在东八区, 需要处理来自西五区的一个日志文件(楼主所遇到的情况) 那么就需要手动为这个时差做处理, 否则机器会自动以本地时差处理. 那么就产生了13小时的误差. 所以以上代码改为:

代码语言:javascript
复制
<span style="font-size:18px;">    time = '2014-08-07-01-03-27'
    format_time = strptime(time, "%Y-%m-%d-%H-%M-%S")
    utc_time = mktime(format_time)  + 3600*13             # 处理时差
    print utc_time</span>

参考资料: 戳这里

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档