2

我尝试使用 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 分钟启用提醒。

4

1 回答 1

2

您正在设置thedateTimetimeZoneto UTC。我不确定您期望发生什么,但这应该会生成一个新的eventusing UTC.

当您使用Z后缀指定时间时,根据定义,您是在告诉它“这是协调世界时”。它相当于将日期/时间偏移设置为UTC -0

使用 UTC 的时区有时用字母表示UTC±00:00或用字母表示 - 对等效航海时区 (GMT) 的引用,自 1950 年左右以来Z一直用 a 表示。Z

如果你想使用“太平洋标准时间”,那么你会想使用

$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");
于 2019-04-02T14:05:30.177 回答