如何使用Python datetime转换不同格式的日期字符串为短日期
解决方案
可以写一个通用的日期转换函数,通过尝试匹配多种格式+异常捕获的方式处理不同的日期字符串,同时处理空日期的情况。以下是Python实现示例:
日期转换函数
from datetime import datetime def convert_date(date_input): # 处理空日期字段(比如空列表、空字符串) if not date_input or date_input == []: return "NO DATE" # 定义需要匹配的两种日期格式 target_formats = [ "%Y-%m-%d %H:%M:%S.%f%z", "%Y-%m-%d %H:%M:%S%z" ] # 依次尝试解析日期,成功后格式化输出 for fmt in target_formats: try: dt_obj = datetime.strptime(date_input, fmt) return dt_obj.strftime("%Y-%m-%d") except ValueError: continue # 若两种格式都匹配失败,返回自定义标识(可按需调整) return "INVALID DATE"
处理JSON数据示例
假设你读取的JSON用户数据结构如下,可按此方式批量处理日期:
import json # 示例JSON数据 raw_user_data = ''' [ {"user_id": 101, "register_date": "2024-01-15 08:45:30+0800"}, {"user_id": 102, "register_date": "2024-02-20 14:20:10.678901+0000"}, {"user_id": 103, "register_date": []}, {"user_id": 104, "register_date": ""} ] ''' # 解析JSON并批量转换日期 parsed_data = json.loads(raw_user_data) for user in parsed_data: user["processed_date"] = convert_date(user["register_date"]) # 输出处理结果 for user in parsed_data: print(f"用户ID: {user['user_id']}, 原日期: {user['register_date']}, 转换后: {user['processed_date']}")
关键说明
- 空值判断覆盖了空列表、空字符串等常见无日期场景,直接返回
NO DATE - 无需提前判断字符串格式,通过异常捕获自动适配两种目标格式,代码更简洁健壮
- 若遇到无法匹配的日期字符串,会返回
INVALID DATE,可根据业务需求修改此逻辑
内容的提问来源于stack exchange,提问作者Kubix
相关产品推荐
相关产品推荐

