python 转换带时区的时间字符串为统一时区的时间
比如我们将gitlab上面commit的提交时间统一转换成北京时间 及+0800 东八区时间
gitlab接口获取的commit信息中:
“committed_date”: “2023-07-27T19:32:41.000-07:00” 美国时间
“committed_date”: “2023-07-27T19:32:41.000+00:00” 英国时间
“committed_date”: “2023-07-27T19:32:41.000+08:00” 北京时间
数据入库格式化时需要把日期时间的字符串转换成统一的北京时间便于数据展示:
我们可以借助 datetime 的datetime.timedelta 来实现(用美国的时间转换为格式"%Y-%m-%d %H:%M:%S +0800"的北京时间举例):
committed_date_time_str = "2023-07-27T19:32:41.000-07:00"
committed_date_time_zone_num = committed_date_time_str[-6:].replace(":","")
committed_date_time = (datetime.datetime.strptime(committed_date_time_str[:-6], '%Y-%m-%dT%H:%M:%S.%f') + datetime.timedelta(hours=(8-int(committed_date_time_zone_num)/100))).strftime("%Y-%m-%d %H:%M:%S +0800")