我正在尝试在启用了时区选项的情况下将事件添加到FaceBook。我想在英国添加时区为“欧洲/伦敦”的活动。这是我注意到的。
当我发送以下开始&结束时间
[start_time] => 2014-08-24T20:00:00+0100
[end_time] => 2014-08-24T22:00:00+0100
我得到的时间是
[When]
Sunday, August 24, 2014
[Time]
8:00pm until 10:00pm
从FaceBook网站查看时。我的时区设置为伦敦,即UTC。但是当我在11月发送活动时,
[start_time] => 2014-11-24T20:00:00+0000
[end_time] => 2014-11-24T22:00:00+0000
它显示为
[When]
Monday, November 24, 2014
[Time]
9:00pm until 11:00pm
这是预期的行为吗?是时候调整时间,晚上8点会在11月24日正确显示吗?
由于 林恩
答案 0 :(得分:3)
一个小小的修正。你说:
我的时区设置为伦敦,即UTC
冬天Europe/London
区域为UTC+00:00
,通常称为GMT
。在夏天,它会切换到UTC+01:00
。通常称为BST
。说伦敦是 UTC是不准确的。我想你已经知道了,我只是在这里为别人说明。
不幸的是,您描述的行为是Facebook的预期。归结为Facebook不知道你在Europe/London
。当您登录时,它只会从JavaScript new Date().getTimezoneOffset()
获取当前时区偏移量。由于它当前为UTC+01:00
,因此当您以用户身份查看页面时,这是应用于事件的偏移量。它做出了一个有缺陷的假设,即偏移量不会改变,或者在下一次转换之前你不会看到未来的事件时间。
Facebook Graph API在user对象中表示了这一点。它有timezone
属性,只是一个数字。我想Facebook开发人员还没有阅读timezone tag wiki我明确指出“时区!=偏移”。
时间会在11月24日调整,晚上8点会正确显示吗?
是。一旦用户在从BST切换到GMT which is on October 27th this year后立即登录,它将显示正确的时间。