技术需求:当入院日期大于出院日期时互换日与月
日期调整解决方案
规则明确
- 当入院日期晚于出院日期时,互换该入院日期的日与月;若入院日期早于或等于出院日期,保持原日期不变。
- 注:需先将日期字符串转换为标准日期对象进行先后判断,避免因格式歧义(如
04/11/2021可理解为4月11日或11月4日)导致错误。
示例验证
入院日期:
04/11/2021(按月/日/年解析为2021年11月4日)
出院日期:13/4/2021(按日/月/年解析为2021年4月13日)
由于2021年11月4日晚于2021年4月13日,互换入院日期的日和月,得到调整后日期:11/04/2021(对应2021年4月11日)
给定数据处理结果
出院日期统一为13/4/2021,转换为标准日期为2021-04-13,以下是6条入院日期的调整结果:
- 原入院日期:
04/11/2021→ 调整后:11/04/2021 - 原入院日期:
04/12/2021→ 调整后:12/04/2021 - 原入院日期:
04/10/2021→ 调整后:10/04/2021 - 原入院日期:
13/04/2021→ 调整后:13/04/2021(与出院日期相等,无需调整) - 原入院日期:
13/04/2021→ 调整后:13/04/2021(与出院日期相等,无需调整) - 原入院日期:
04/12/2021→ 调整后:12/04/2021
通用代码实现(Python)
from datetime import datetime def adjust_admission_date(admission_str, discharge_str): # 解析出院日期,兼容单数字月/日格式 discharge_parts = discharge_str.split('/') discharge_padded = '/'.join([part.zfill(2) for part in discharge_parts]) discharge_date = datetime.strptime(discharge_padded, "%d/%m/%Y") # 解析入院日期的两种可能格式 admission_padded = '/'.join([part.zfill(2) for part in admission_str.split('/')]) adm_dmy = datetime.strptime(admission_padded, "%d/%m/%Y") adm_mdy = datetime.strptime(admission_padded, "%m/%d/%Y") # 判断是否需要调整 if adm_mdy > discharge_date: return adm_mdy.strftime("%d/%m/%Y") else: return admission_str # 批量处理给定数据 discharge_date = "13/4/2021" admission_list = ["04/11/2021", "04/12/2021", "04/10/2021", "13/04/2021", "13/04/2021", "04/12/2021"] for adm in admission_list: print(f"原日期: {adm} → 调整后: {adjust_admission_date(adm, discharge_date)}")
内容的提问来源于stack exchange,提问作者Abdulsalam Elnaeem
相关产品推荐
相关产品推荐

