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("没有数据,需要更新数据!")