如何将java.util.date转换为Python可识别的DateTime格式
java.util.Date默认输出转Python datetime方法
你拿到的Sat Jan 01 02:00:00 EET 2022是java.util.Date调用toString()的标准输出格式,直接用Python即可解析,不需要复杂处理。
无额外依赖、兼容性最好的方案(不保留原时区)
时区缩写本身存在重名歧义,且Python原生strptime对跨平台时区缩写的支持不稳定,如果你不需要绑定原始时区信息,直接截断时区字段解析即可,100%兼容所有运行环境:
from datetime import datetime import locale # 指定英文时间解析环境,避免中文系统下星期、月份缩写解析失败 locale.setlocale(locale.LC_TIME, 'en_US.UTF-8') # 替换为你从SPSS Modeler读取到的实际日期字符串 java_date_str = "Sat Jan 01 02:00:00 EET 2022" # 拆分字符串后移除中间的时区字段 str_parts = java_date_str.split() processed_str = " ".join(str_parts[:4] + str_parts[5:]) # 按固定格式解析为原生datetime对象 dt_result = datetime.strptime(processed_str, "%a %b %d %H:%M:%S %Y")
需要保留时区信息的方案
如果需要保留原始时区,安装python-dateutil库后可以直接自动解析整串,不需要手动处理格式:
from dateutil import parser java_date_str = "Sat Jan 01 02:00:00 EET 2022" dt_result = parser.parse(java_date_str)
解析后得到的是带时区信息的aware datetime对象,可以直接做时间计算、时区转换操作。
注意事项
- 通用时区缩写存在重名冲突(如CST可同时代表4个不同时区),如果你的数据源使用的时区是固定的,建议解析后手动绑定指定时区,避免自动识别错误。
- 如果运行环境没有
en_US.UTF-8本地化配置,可以替换为系统中已安装的英文本地化标识,比如English_United States.1252(Windows平台)。
内容的提问来源于stack exchange,提问作者KRStam
相关产品推荐
相关产品推荐

