如何将含CST的时间字符串转换为datetime对象
将包含CST的时间字符串转换为datetime对象
CST是个多义时区缩写,可能代表中国标准时间(UTC+8)、美国中部标准时间(UTC-6)等,处理时得先明确对应时区,避免歧义。下面是两种常用处理方法:
方法一:用Python标准库实现
Python标准库的datetime.strptime默认不识别CST,我们可以先解析时间部分,再手动绑定时区:
from datetime import datetime, timedelta, timezone ts = "Wed Dec 31 18:00:00 CST 1969" # 解析不带时区标识的时间字符串 dt_naive = datetime.strptime(ts, "%a %b %d %H:%M:%S CST %Y") # 绑定中国标准时间(UTC+8) cst_tz = timezone(timedelta(hours=8), name="CST") dt_aware = dt_naive.replace(tzinfo=cst_tz) print(dt_aware) # 输出带时区的datetime对象
如果你的CST指美国中部标准时间,把timedelta(hours=8)改成timedelta(hours=-6)即可。
方法二:用python-dateutil简化处理
第三方库python-dateutil能自动识别大部分时区缩写,处理起来更省心,不过需要先安装:
pip install python-dateutil
基础用法:
from dateutil import parser ts = "Wed Dec 31 18:00:00 CST 1969" dt = parser.parse(ts) print(dt)
如果担心时区歧义,也可以手动指定CST对应的时区:
from dateutil import parser from dateutil.tz import gettz # 明确指定CST为中国标准时间(Asia/Shanghai) tz_map = {"CST": gettz("Asia/Shanghai")} dt = parser.parse(ts, tzinfos=tz_map) print(dt)
注意事项
- 务必确认业务中CST对应的实际时区,否则会出现时间解析错误
- 标准库方法无需额外安装依赖,适合轻量场景;第三方库更便捷,适合复杂时区处理
内容的提问来源于stack exchange,提问作者lucky1928
相关产品推荐
相关产品推荐

