使用MS Graph API创建全天事件时Outlook事件延伸至次日问题求助
问题原因排查
- 未显式开启全天事件标识:MS Graph API 创建全天事件必须在请求体中添加
isAllDay: true参数,未配置该参数时接口会将事件识别为普通定时事件,即使时间设置为0点到次日0点,也会因时区偏移出现跨天显示异常。 - 时间格式不符合规范:全天事件的起止时间仅需要传入
yyyy-MM-dd格式的日期,不需要携带时分秒。你当前使用date('Y-m-d H:i:s')生成带时分秒的时间参数,会触发接口的时间解析逻辑异常。 - 时区不匹配:请求中传入的
timeZone参数如果和Outlook客户端/账号设置的时区不一致,会导致时间转换偏移,最终显示跨天。
修正方案
将你的代码调整为如下写法即可:
// 显式声明为全天事件 $eventBody['isAllDay'] = true; // 起止时间仅保留日期部分 $eventBody['start'] = [ "dateTime" => date('Y-m-d', strtotime($row->day_date)), "timeZone" => $timeZone ]; $eventBody['end'] = [ "dateTime" => date('Y-m-d', strtotime($row->day_date . ' +1 day')), "timeZone" => $timeZone ];
调整完成后请确认$timeZone取值和你Outlook账号设置的时区一致,例如中国大陆地区可设置为China Standard Time。
内容的提问来源于stack exchange,提问作者Kevin
相关产品推荐
相关产品推荐

