#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
时间格式化工具函数
用于智能显示就诊时间
"""

import pandas as pd
from datetime import datetime

def format_visit_time_smart(visit_time_str):
    """
    智能格式化就诊时间
    
    Args:
        visit_time_str: 就诊时间字符串，格式如 "2024-12-17 00:00:00"
    
    Returns:
        str: 格式化后的时间字符串
        - 今年：显示月份+日期（如：5月12号）
        - 去年：显示去年+月份（如：去年12月）
        - 更早年份：显示年份+月份（如：2022年5月）
    """
    try:
        # 处理空值
        if pd.isna(visit_time_str):
            return "上次"
        
        visit_time_str = str(visit_time_str).strip()
        if not visit_time_str:
            return "上次"
        
        # 提取日期部分（去掉时间部分）
        date_part = visit_time_str.split()[0]
        visit_date = datetime.strptime(date_part, '%Y-%m-%d')
        current_date = datetime.now()
        
        # 判断年份关系
        if visit_date.year == current_date.year:
            # 今年：显示月份+日期
            return f"{visit_date.month}月{visit_date.day}号"
        elif visit_date.year == current_date.year - 1:
            # 去年：显示去年+月份
            return f"去年{visit_date.month}月"
        else:
            # 更早的年份：显示具体年月
            return f"{visit_date.year}年{visit_date.month}月"
    except Exception as e:
        # 解析失败时返回默认值
        return "上次"

def apply_smart_time_to_template(template_text, visit_time_str):
    """
    将智能时间格式应用到模板文本中
    
    Args:
        template_text: 包含【智能时间显示】占位符的模板文本
        visit_time_str: 就诊时间字符串
    
    Returns:
        str: 替换后的模板文本
    """
    smart_time = format_visit_time_smart(visit_time_str)
    return template_text.replace("【智能时间显示】", smart_time)

# 使用示例
if __name__ == "__main__":
    # 测试不同时间格式
    test_times = [
        "2025-05-12 10:30:00",  # 今年
        "2024-12-17 14:20:00",  # 去年
        "2022-03-15 09:15:00",  # 更早年份
        "",                     # 空值
        None                    # None值
    ]
    
    print("智能时间格式化测试:")
    for time_str in test_times:
        formatted = format_visit_time_smart(time_str)
        print(f"输入: {time_str} -> 输出: {formatted}") 