You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google路线优化请求执行时的时间窗口异常问题排查

问题原因分析

1. 时区转换逻辑错误

转换DTO时,直接将带时区的datetime对象的本地时间部分格式化后添加Z(UTC时区标识),而非先将原时区时间转换为UTC时间。例如测试用例中的2025-01-19T12:00:00+01:00,被错误格式化为2025-01-19T12:00:00Z(标记为UTC时间),但该时间对应的实际UTC时间应为2025-01-19T11:00:00Z。

2. 时间窗口超出全局范围

错误返回的2025-01-19T04:00:00-08:00是转换后的错误UTC时间(2025-01-19T12:00:00Z)对应UTC-8时区的时间,该时间落在Google Maps Route Optimization设置的全局时间窗口之外,触发了验证错误。

解决方案

1. 修正时区转换代码

修改fromDeliveryToDeliveryDTO方法中的时间窗口转换逻辑,先将原时区时间转换为UTC时间,再格式化并添加Z标识:

def fromDeliveryToDeliveryDTO(delivery: Delivery) -> DeliveryDTO:
    location = LocationDTO(
        latitude=delivery.arrivalLocation.latitude,
        longitude=delivery.arrivalLocation.longitude
    )
    # 先转换为UTC时间再格式化
    timeWindows = [
        TimeWindowDTO(
            startTime=timeWindow.startTime.astimezone(timezone.utc).strftime("%Y-%m-%dT%H:%M:%S")+"Z", 
            endTime=timeWindow.endTime.astimezone(timezone.utc).strftime("%Y-%m-%dT%H:%M:%S")+"Z"
        ) 
        for timeWindow in delivery.timeWindows
    ]

    return DeliveryDTO(
        arrivalLocation=location,
        duration=delivery.duration,
        timeWindows=timeWindows
    )

2. 校验全局时间窗口配置

确认Google Maps Route Optimization请求中的全局时间窗口(globalStartTime/globalEndTime)范围,确保转换后的UTC时间窗口落在该范围内。例如测试用例原时间转换为UTC后是2025-01-19T11:00:00Z至2025-01-19T13:00:00Z,需保证全局时间窗口覆盖该时段。

内容的提问来源于stack exchange,提问作者Ketterle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 06:50:22