使用Microsoft-graph php-sdk创建事件

时间:2019-02-26 08:35:46

标签: php microsoft-graph microsoft-graph-sdks microsoft-graph-calendar

我尝试使用php-sdk创建事件,但设置开始和结束时区无效。

$e = new Model\Event();
  $e->setSubject($subject);

$start = new Model\DateTimeTimeZone();
  $start->setDateTime($startDateTime);
  $start->setTimeZone($startTimeZone);

$e->setStart($start);
$e->setEnd($start);

$body = new Model\ItemBody();
  $body->setContentType(Model\BodyType::HTML);
  $body->setContent($content);

$e->setBody($body);

但是结果事件每次都是UTC时间。

我尝试过:

$e->setOriginalStartTimeZone($startTimeZone);
$e->setOriginalEndTimeZone($startTimeZone);

并添加标题:

Prefer: outlook.timezone="Pacific Standard Time"

但是结果是一样的。

除此之外,当我添加

$e->setReminderMinutesBeforeStart(8);
$e->setIsReminderOn(true);

其余部分被禁用。如果我不包含此代码,则在活动开始前15分钟启用提醒。

1 个答案:

答案 0 :(得分:1)

您正在将dateTimetimeZone都设置为UTC。我不确定您期望发生什么,但是此应该使用event生成一个新的UTC

使用后缀Z指定时间时,by definition就是“这是世界协调时间”。等同于将日期/时间偏移设置为UTC -0

  

使用UTC的时区有时用UTC±00:00或字母Z来表示,这是对等效航海时区(GMT)的引用,此时间段用Z表示,大约是1950年。

如果您要使用“太平洋标准时间”,那么您将要使用

$start = new Model\DateTimeTimeZone();
  $start->setDateTime("2019-03-11T21:01:57");
  $start->setTimeZone("Pacific Standard Time");

尽管您也许可以简单地将-08:00用作UTC偏移量(我对PHP SDK的经验不足,但不知道这是否可以解决我的问题,但我想可以) :

$start = new Model\DateTimeTimeZone();
  $start->setDateTime("2019-03-11T21:01:57-08:00");