写点什么

Python 时区转换的两种方式

作者:红毛丹
  • 2022 年 6 月 09 日
  • 本文字数:753 字

    阅读完需:约 2 分钟

前言

最近遇到一个问题:北京时间与美国时间的转换, 按照之前的方式转换,程序一直没报什么错但最近运行竟然出错了


我换算的是 CT 时间和北京时间的换算, 经过调查才知道,美国时区是分冬令时和夏令时的

之前的换算方式

美国夏令时从每年的 3 月第二个周日 2AM(当地时间)开始,持续到 11 月第一个周日 2AM(当地时间)结束,夏令时的时候要比冬令时少一个小时,所以我之前写这段代码的时候是在冬令时,相差 14 个小时,没有问题。


GetCTtime    ${last_calcutation_date}     evaluate     (datetime.datetime.now() + datetime.timedelta(hours=-14)).strftime("%m/%d/%Y %H:%M")    datetime
复制代码


很不幸,现在是夏令时,那就是相差 13 个小时, 我算出来的就不准确了


GetCTtime    ${last_calcutation_date}     evaluate     (datetime.datetime.now() + datetime.timedelta(hours=-13)).strftime("%m/%d/%Y %H:%M")    datetime
复制代码


为了避免判断是夏令时还是冬令时,我换了一种方式,直接获取该时区的具体时间,不在与北京时间进行换算

现在用的

GetCTtime    ${last_calcutation_date}     evaluate     (datetime.datetime.now(pytz.timezone('America/Chicago'))).strftime("%m/%d/%Y %H:%M")    datetime,pytz
复制代码

测试

用到的 Python 知识点

Python 库 datetime

datetime 模块是对 time 模块的一个高级封装,提供了对日期、时间、时区、时间段的操作。与 time 模块相比,datetime 模块提供的接口更直观、易用,功能也更加强大大概有如下类


  • date 日期类

  • time 时间类

  • datetime 日期与时间类

  • timedelta 表示两个 date ,time, datetime 实例之间的时间差

  • datetime.tzinfo 时区相关信息对象的抽象基类

  • datetime.timezone 实现 tzinfo 抽象基类的类,表示与 UTC 的固定偏移量

python 库 pytz

可参考官方文档,有空就编译下


http://pytz.sourceforge.net/

发布于: 刚刚阅读数: 3
用户头像

红毛丹

关注

还未添加个人签名 2022.01.26 加入

全网网名都是红毛丹 掘金个人主页https://juejin.cn/user/1820446987401374

评论

发布
暂无评论
Python时区转换的两种方式_Python_红毛丹_InfoQ写作社区