import requests
import mysql.connector
from datetime import datetime, timedelta
import schedule
import time
import json
import gzip
import pytz
from SmartVoyage.config import Config

conf = Config()

def should_update_data(latest_time, force_update=False):
    """
    判断是否需要更新天气数据

    Args:
        latest_time (datetime): 上次更新时间
        force_update (bool): 是否强制更新，默认为False

    Returns:
        bool: True表示需要更新，False表示不需要更新
    """
    # 如果强制更新标志为True，则直接返回需要更新
    if force_update:
        return True

    # 如果上次更新时间为None（表示没有数据），则需要更新
    if latest_time is None:
        return True

    # 获取当前时间（使用上海时区）
    current_time = datetime.now(TZ)

    # 判断当前时间与上次更新时间是否超过1天，超过则需要更新，计算天数差
    return (current_time - latest_time) > timedelta(days=1)


# 验证代码
if __name__ == "__main__":
    from datetime import datetime, timedelta
    import pytz

    # 设置时区
    TZ = pytz.timezone('Asia/Shanghai')

    # 模拟一个2天前的更新时间
    latest = datetime.now(TZ) - timedelta(days=2)
    print("========模拟一个两天前的时间==============")
    print(latest)
    # 测试是否需要更新数据
    print(should_update_data(latest))

    # 根据更新判断结果输出相应信息
    if should_update_data(latest):
        print(f"需要更新数据，上次更新时间：{latest}")
    else:
        print("没有数据，需要更新数据！")