前言 最近遇到一个问题:北京时间与美国时间的转换, 按照之前的方式转换,程序一直没报什么错但最近运行竟然出错了 我换算的是CT时间和北京时间的换算, 经过调查才知道,美国
前言
最近遇到一个问题:北京时间与美国时间的转换, 按照之前的方式转换,程序一直没报什么错 但最近运行竟然出错了
我换算的是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
可参考官方文档,有空就编译下
pytz.sourceforge.net/