SP 2013迁移至SPO后调用Rest Api获取日期出现前后1天偏移问题
问题根因
- SPO REST API 默认返回的日期为UTC标准时间,SharePoint列表前端展示时会自动结合站点时区设置、当前访问用户的个人时区设置做转换,前端可见日期为转换后的本地时间,和API返回的UTC时间天然存在偏移差。
- 本次场景涉及三个不同时区:德国(UTC+1/UTC+2夏令时)、印度(UTC+5:30)、葡萄牙(UTC+0/UTC+1夏令时),不同日期的夏令时切换节点会导致偏移差不是固定值,因此出现部分日期提前1天、部分延后1天的表现。
- 租户层面的12小时制设置仅影响时间展示格式,不会改变时间戳的偏移计算规则,和本次问题无关。
排查验证步骤
- 第一步:确认目标SPO站点时区配置:进入站点设置→区域设置,核对时区是否为预期的德国时区。
- 第二步:提取单条异常数据做对比:将API返回的UTC时间转为站点时区对应的本地时间,核对转换结果是否和列表前端展示的正确值一致。例如API返回
2024-06-01T22:00:00Z,转成德国夏令时(UTC+2)为2024-06-02T00:00:00,即表现为API返回日期比前端显示早1天。 - 第三步:若需API直接返回和前端一致的本地时间,可在REST请求URL后追加参数
$select=*,日期字段内部名/Title&$expand=日期字段内部名,展开后的日期字段Title属性即为站点时区转换后的字符串格式,无需手动做偏移计算。
请求示例
调整后的REST请求格式如下,将示例中的列表名、日期字段名替换为实际值即可:
/_api/web/lists/getbytitle('业务列表')/items?$select=Id,Title,CheckDate/Title&$expand=CheckDate
工单提交建议
此类时区偏移问题是SPO开发的常见问题,绝大多数场景下通过上述方案即可解决,无需提交工单。如果按步骤排查后仍然存在日期异常,再提交工单处理即可。
内容的提问来源于stack exchange,提问作者Joao Livio
相关产品推荐
相关产品推荐

