事件日期时间在mysql中存储不正确

时间:2012-09-13 19:06:10

标签: php mysql facebook datetime facebook-php-sdk

事件'start_time'被错误地存储到mysql数据库中。

存储错误的事件

https://graph.facebook.com/112797205532177 - 商店为2012-10-12 19:00:00
对错是2012-10-13

{
"id": "112797205532177", 
"owner": {
    "name": "MUST...NOT...KILL", 
    "category": "Musician/band", 
    "id": "108837005801452"
}, 
"name": "METAL MEOWLISHA", 
"description": "W/ Brutailty", 
"start_time": "2012-10-13", 
"location": "The brass mug", 
"venue": {
    "id": "151496721577181"
}, 
"privacy": "OPEN", 
"updated_time": "2012-07-27T21:20:20+0000"
}

https://graph.facebook.com/278345158937377 - 存储为2012-11-18 18:00:00
正确的是2012-11-19

{
"id": "280381075399709", 
"owner": {
    "name": "Lamb of God", 
    "category": "Musician/band", 
    "id": "9008741434"
}, 
  "name": "Lamb of God On Tour", 
  "description": "Wed/Oct-31\tLos Angeles, CA @ TBA\t", 
  "start_time": "2012-10-31", 
  "privacy": "OPEN", 
  "updated_time": "2012-09-05T21:37:29+0000"
}

我一直在网上搜索解决方案。没有运气

目标是存储确切的字段'start_time'而不进行转换。我的代码中没有转换。我认为它与php设置有关

编辑:从图表api添加了返回的结果,这是我的插入字符串(在codeigniter中

$eventdata = array(
            'artists_name'=>$artists,
            'event_status'=>$event_stat,
            'formatted_datetime'=>$formatted_datetime,
            'formatted_location'=>$formatted_location,
            'event_id'=>$event_id,
            'venue_name'=>$venue_name,
            'venue_city'=>$vcity,
            'venue_region'=>$vstate,
            'venue_country'=>$vcountry,
            'venue_lat'=>$vlat,
            'venue_long'=>$vlong,
            'date_time'=>$date_time,
            'rsvp_url'=>$rsvp_url,
            'ticket_url'=>$ticket_url,
            'updated'=>$updated);
            $eventinsert = $this->db->insert_string('newEvents',$eventdata);
            $this->db->query($eventinsert);

感谢

编辑这是完整的php文件     

include 'facebook.php';

$facebook = new Facebook(array(
  'appId'  => 'xxxxxxxxxxxxxxx',
  'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
));


$check = $facebook->api('278345158937377');
print_r ($check['start_time']);

?>

到目前为止,我已经把所有东西都剥掉了。我觉得很奇怪,字符串结果会在显示之前自动转换。

facebooks网站上的图表和fql显示2012-11-19 我的网站显示2012-11-18

2 个答案:

答案 0 :(得分:0)

您的应用是否已启用Events Timezone迁移?

当我在没有启用迁移的情况下使用应用程序生成的访问令牌查询事件278345158937377时,Facebook将返回"start_time": "2012-11-19T01:00:00"

当我从启用了时区迁移的应用中创建时,API调用会返回"start_time": "2012-11-19"

尝试从应用信息中心的高级标签中启用此迁移,看看是否可以消除您的问题。

答案 1 :(得分:0)

将GMT偏移量添加到时间,然后存储它。

示例:Im在EST中,时差为5小时,因此在unix时间戳中添加18000