UPS Tracking API新版JSON接口:如何解析活动时间时区?
UPS新版JSON追踪API活动时区解析规则
问题背景
UPS旧版XML追踪API的活动响应中,会同时返回本地日期时间、GMT时间及时区偏移量,示例如下:
<Activity> <ActivityLocation> <Address> <City>DUNLAP</City> <StateProvinceCode>TN</StateProvinceCode> <PostalCode>37327</PostalCode> <CountryCode>US</CountryCode> </Address> <Code>MN</Code> <Description>Side Door</Description> </ActivityLocation> <Date>20231130</Date> <Time>164340</Time> <GMTDate>2023-11-30</GMTDate> <GMTTime>21:43:40</GMTTime> <GMTOffset>-05:00</GMTOffset> </Activity>
但新版JSON追踪API(/api/track/v1/details/{tracking-no})的活动响应仅提供本地日期和时间,缺少时区相关信息,示例如下:
{ "location": { "address": { "city": "DUNLAP", "stateProvince": "TN", "countryCode": "US", "country": "US" }, "slic": "3740" }, "status": { "type": "D", "description": "DELIVERED ", "code": "FS", "statusCode": "011" }, "date": "20231130", "time": "164340" }
开发者需自行确定活动日期时间对应的时区,现有两种可选方案,需明确正确规则。
方案分析与结论
方案1:使用活动地点的时区
每个活动的location.address字段包含了该活动发生的具体城市、州/省及国家信息,结合旧版API的逻辑(旧版本地时间对应活动地点的时区),这是符合业务场景的正确方案。比如示例中活动地点为美国田纳西州邓拉普,对应美国中部时区(UTC-5/UTC-4,夏令时调整),与旧版返回的GMTOffset完全匹配。
方案2:使用包裹始发地址时区
该方案不符合实际业务逻辑,包裹的中转、派送等活动发生在不同地点,每个活动的本地时间必然对应发生地的时区,而非始发地时区,会导致时间解析错误。
综上,正确的规则是使用活动对应地点(activity.location.address)的时区来解析本地日期时间,这也是延续旧版API的设计逻辑。
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

