我的Facebook活动的事件时间显示不正确(通过Javascript提交)

Gro*_*mer 4 javascript facebook

我目前正在撰写一个与Facebook交互并为用户创建活动的网站.我正在使用Javascript提交事件,该事件已成功提交.问题是,Facebook上显示的时间与我提交的时间相差无几.

这是我的代码:

var event = {
    start_time: '{{ show_time.start_time|date:'U' }}',
    name: 'Movie Night: ' + '{{ show_time.movie.title }}'
};

FB.api('/me/events', 'post', event, function(response) {
    // Send invites, etc...
});
Run Code Online (Sandbox Code Playgroud)

是的,我们在那里使用了一些Django.

{{show_time.start_time | date:'U'}}将放入一个纪元时间戳.我还发送了一个ISO 8601日期时间,结果相同.目前,我们在日期时间内没有时区信息.我不确定这是否会导致问题,因为要测试,我已经将-06:00添加到start_time,并且它仍然在Facebook上显示错误.

让我感到困惑的是Facebook上的文档中,它们显示了一条可能会创建事件的卷曲线,并且它们发送的start_time是一个纪元时间戳.在同一页面的其他部分,他们说start_time必须是ISO 8601.我还读过你需要将你的日期时间转换为太平洋时间,然后转换为纪元时间戳,然后将其作为start_time提交.我只是想知道正确的方法是什么.Facebook的文档在这方面看起来很糟糕,所以我希望SO能提供帮助!谁通过Javascript API实际上通过Facebook创建了一个活动,并让它显示在网站上的正确时间?你是怎么做到的?

Coq*_*vas 5

首先,Facebook事件时区管理存在一个错误.如果您在API和Facebook上查看活动,您可以看到不同的日期.API上的正确日期和Facebook上的错误日期,因为您通过API添加事件.如果您在Facebook上创建了活动,则API将显示错误的日期.

如果您尝试任何API事件调用,您可以看到使用的格式:

"end_time": "2010-03-15T00:30:00+0000"
Run Code Online (Sandbox Code Playgroud)

您可以注意到,日期/时间格式是ISO 8601,您应该使用它,但可能,时间戳应该有效.通过查看时区(UTC,+ 0000),您可以将guest将您的本地日期转换为UTC(+0000),但这是问题所在.

日期必须转换为PST/PDT时区,但保持UTC时区指示符(+0000)为Mike Lambert发现http://bugs.developers.facebook.net/show_bug.cgi?id=12558

我想在这一点上API是错误的,但可以预见错误,修复它只会破坏其他开发人员.所以你可以说这是一个文档错误:http: //developers.facebook.com/docs/reference/api/event

应该确实说这些ISO格式的UTC时间都应转换为PST/PDT以检索用户输入的事件时间.(这不是事件实际发生的UTC/GMT时间.)