我尝试使用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分钟启用提醒。
答案 0 :(得分:1)
您正在将dateTime
和timeZone
都设置为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");