Python 时区转换的两种方式
前言
最近遇到一个问题:北京时间与美国时间的转换, 按照之前的方式转换,程序一直没报什么错但最近运行竟然出错了
我换算的是 CT 时间和北京时间的换算, 经过调查才知道,美国时区是分冬令时和夏令时的
之前的换算方式
美国夏令时从每年的 3 月第二个周日 2AM(当地时间)开始,持续到 11 月第一个周日 2AM(当地时间)结束,夏令时的时候要比冬令时少一个小时,所以我之前写这段代码的时候是在冬令时,相差 14 个小时,没有问题。
复制代码
很不幸,现在是夏令时,那就是相差 13 个小时, 我算出来的就不准确了
复制代码
为了避免判断是夏令时还是冬令时,我换了一种方式,直接获取该时区的具体时间,不在与北京时间进行换算
现在用的
复制代码
测试
用到的 Python 知识点
Python 库 datetime
datetime 模块是对 time 模块的一个高级封装,提供了对日期、时间、时区、时间段的操作。与 time 模块相比,datetime 模块提供的接口更直观、易用,功能也更加强大大概有如下类
date 日期类
time 时间类
datetime 日期与时间类
timedelta 表示两个 date ,time, datetime 实例之间的时间差
datetime.tzinfo 时区相关信息对象的抽象基类
datetime.timezone 实现 tzinfo 抽象基类的类,表示与 UTC 的固定偏移量
python 库 pytz
可参考官方文档,有空就编译下
版权声明: 本文为 InfoQ 作者【红毛丹】的原创文章。
原文链接:【http://xie.infoq.cn/article/1a98a9963575999ae795007f8】。文章转载请联系作者。
评论