&引用;“无时区事件”;Facebook的迁移
Facebook最近增加了无时区事件(https://developers.facebook.com/roadmap/#timezone-减少事件)到其开发人员路线图,其中 “由于最初创建了此迁移,我们在事件中添加了一个时区字段,该字段指示事件预期发生的时区名称(定义见此处)。仅供参考,在ISO 8601中读取时间的开发人员在读取事件时间时应支持完整标准。大多数事件返回本地时间(无GMT偏移量),但在未来,事件可能会返回其他格式(即仅日期和精确)。” 它适用于ISO8601格式的日期,但如果我得到的日期是历元格式,我总是得到+7小时的差异 e、 g 返回 及 返回&引用;“无时区事件”;Facebook的迁移,facebook,migration,timezone,Facebook,Migration,Timezone,Facebook最近增加了无时区事件(https://developers.facebook.com/roadmap/#timezone-减少事件)到其开发人员路线图,其中 “由于最初创建了此迁移,我们在事件中添加了一个时区字段,该字段指示事件预期发生的时区名称(定义见此处)。仅供参考,在ISO 8601中读取时间的开发人员在读取事件时间时应支持完整标准。大多数事件返回本地时间(无GMT偏移量),但在未来,事件可能会返回其他格式(即仅日期和精确)。” 它适用于ISO8601格式的日期,但如果我得
{
“id”:“369000383135224”,
“所有者”:{
“姓名”:“Horst Uwe Peter”,
“id”:“1117563687”
},
“名称”:“都柏林时间10:25的事件”,
“开始时间”:133652300,我管理的页面上的事件从未返回时区
我发现在前端对话框中输入的事件时间在“America/Los_Angeles”中被视为本地时间(加上美国夏令时的变化,因此您将在冬季看到+6,夏季看到+7),然后转换为“UTC”存储在数据库中
对于显示,我使用以下php函数显示正确的时间,并在页面上注意时间是事件位置的本地时间:
function fb_event_time_convert($fb_time) {
$origin_dtz = new DateTimeZone('UTC');
$remote_dtz = new DateTimeZone('America/Los_Angeles');
$fb_time_str = '@' . $fb_time;
$origin_dt = new DateTime($fb_time_str, $origin_dtz);
$remote_dt = new DateTime($fb_time_str, $remote_dtz);
$offset = $origin_dtz->getOffset($origin_dt) - $remote_dtz->getOffset($remote_dt);
return $fb_time - $offset;
}
{
"id": "369000383135224",
"owner": {
"name": "Horst Uwe Peter",
"id": "1117563687"
},
"name": "Event in Dublin time 10:25",
"start_time": 1336152300, <== Fri, 04 May 2012 17:25:00 GMT
"end_time": 1336155900, <== Fri, 04 May 2012 18:25:00 GMT
"timezone": "Europe/Dublin",
"location": "Dublin, Ireland",
"venue": {
"id": "110769888951990"
},
"privacy": "FRIENDS",
"updated_time": 1336123649,
"type": "event"
}
{
"data": [
{
"eid": 369000383135224,
"name": "Event in Dublin time 10:25",
"description": "",
"location": "Dublin, Ireland",
"venue": {
"id": 110769888951990
},
"start_time": 1336152300, <== Fri, 04 May 2012 18:25:00 GMT
"end_time": 1336155900, <== Fri, 04 May 2012 18:25:00 GMT
"update_time": 1336123649,
"creator": 1117563687,
"privacy": "FRIENDS"
}
]
}
function fb_event_time_convert($fb_time) {
$origin_dtz = new DateTimeZone('UTC');
$remote_dtz = new DateTimeZone('America/Los_Angeles');
$fb_time_str = '@' . $fb_time;
$origin_dt = new DateTime($fb_time_str, $origin_dtz);
$remote_dt = new DateTime($fb_time_str, $remote_dtz);
$offset = $origin_dtz->getOffset($origin_dt) - $remote_dtz->getOffset($remote_dt);
return $fb_time - $offset;
}