Python utc转化时间

来源:互联网 发布:软件设计师怎么备考 编辑:程序博客网 时间:2024/05/17 22:52

最近在开发项目的时候, 遇到了时区, 本地时间和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.

    time = '1407391625'    print gmtime(float(time))

输出:

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


===========

第三种情况

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

<span style="font-size:18px;">import calendarimport timeimport datetimed = datetime.datetime(2010, 10, 10)calendar.timegm(d.timetuple())1286668800time.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时间. 

<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小时的误差. 所以以上代码改为:

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


参考资料: 戳这里

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 十个多月宝宝便秘怎么办 8个月宝宝过敏怎么办 宝宝二十个月便秘怎么办 7个月宝宝便秘拉不出怎么办 二十六个月宝宝便秘怎么办 八个月宝宝吃鸡蛋过敏怎么办 8个月宝宝 吃盐怎么办 40多天婴儿拉肚怎么办 刚出生婴儿拉肚怎么办 20多天婴儿拉肚怎么办 米汤煮的太稠了怎么办 两岁宝宝不吃蔬菜怎么办 两岁宝宝不爱吃蔬菜怎么办 四个月宝宝头有点歪怎么办 宝宝吃过了还闹怎么办 ddrops d3吃多了怎么办 ddrops d3滴多了怎么办 维生素d滴多了怎么办 ddrops最后滴不出来的怎么办 ddrops一次滴3滴怎么办 小孩子头睡偏了怎么办 7岁儿童头睡偏了怎么办 婴儿后脑睡平了怎么办 六个月宝宝免疫力低怎么办 十个月宝宝食烧怎么办 6个月宝宝感冒了怎么办 5个月宝宝腿短怎么办 5个月宝宝太瘦怎么办 宝宝喝了浓奶粉怎么办 一岁把尿不尿怎么办 五个月的宝宝大便干燥怎么办 婴儿便秘怎么办什么方法最有效 8个月小孩便秘怎么办 1个月新生儿便秘怎么办 新生儿头竖立0分怎么办 20天的宝宝便秘怎么办 出生23天的宝宝便秘怎么办 喝奶粉的宝宝便秘怎么办 抱孩子抱的驼背怎么办 4岁宝宝不拉屎怎么办 小朋友大便拉不出来怎么办