如何在Python中将12小时制时间转为24小时制(去除时区偏移)
解决12小时制转24小时制并移除时区偏移的问题
我来帮你搞定这个问题!你遇到的情况是因为dateutil.parser解析后返回的是带时区感知的datetime对象,所以输出会附带时区偏移信息。这里有两种简单的解决方法:
方法一:移除已解析datetime的时区信息
先正常解析时间,再通过replace(tzinfo=None)移除时区属性,最后用strftime格式化出你想要的格式:
from datetime import datetime import dateutil.parser as dparser date_str='December 31, 2020 5:59:59 PM CST' date = dparser.parse(date_str) # 移除时区信息 date_without_tz = date.replace(tzinfo=None) # 格式化输出目标格式 print('date =', date_without_tz.strftime('%Y-%m-%d %H:%M:%S'))
方法二:解析时直接忽略时区
使用dparser.parse的ignoretz=True参数,让解析器直接忽略字符串中的时区信息,返回无时区的datetime对象:
from datetime import datetime import dateutil.parser as dparser date_str='December 31, 2020 5:59:59 PM CST' # 解析时忽略时区 date = dparser.parse(date_str, ignoretz=True) # 格式化输出 print('date =', date.strftime('%Y-%m-%d %H:%M:%S'))
两种方法最终都会输出:date = 2020-12-31 17:59:59,完全符合你的需求。另外提醒下,你的原代码用的是Python2的print语法,在Python3里需要加上括号哦~
内容的提问来源于stack exchange,提问作者VJG




