2013-11-20 2 views
0

페이스 북 이벤트를 내 사이트로 가져 오지만 오늘 이벤트가 언젠가 일찍 사라지는 문제가 있습니다. 오늘 이벤트가 있으면 오늘 내 사이트에 표시되지 않습니다. 오늘 00시에 이벤트가보기에서 사라집니다. 작동하지 않는PHP : Facebook 이벤트 API start_time에 오늘 이벤트가 표시되지 않습니다.

<?php 

//we have to set timezone to California 
date_default_timezone_set('California'); 

//requiring FB PHP SDK 
require 'fb-sdk/src/facebook.php'; 

//initializing keys 
$facebook = new Facebook(array(
     'appId' => 'APP_ID', 
     'secret' => 'APP_SECRET', 
     'cookie' => true, // enable optional cookie support 
)); 

$fql = "SELECT eid, name, pic, start_time, end_time, location, description, attending_count FROM event WHERE eid IN (SELECT eid FROM 
event_member WHERE uid = PAGE_ID) AND start_time >= now() ORDER BY start_time ASC"; 
$param = array(
'method' => 'fql.query', 
'query'  => $fql, 
'callback' => '' 
); 

$fqlResult = $facebook->api($param); 

//looping through retrieved data 
foreach($fqlResult as $keys => $values) { 

     $start_date = date('l, F d, Y', $values['start_time']); 
     $end_date = date('l, F d, Y', $values['end_time']); 

     $start_time = date('g:i a', $values['start_time']); 
     $end_time = date('g:i a', $values['end_time']); 

     $time = explode("T", $values['start_time']); 
     $tid = explode("+", $time[1]); 

     if ($time[0] > date("Y-m-d")) 
     { 

       //printing the data 
       echo "<div class='event'>"; 
       echo "<div>"; 

         echo "<table><tr><td valign='top'>"; 
         echo "<img src={$values['pic']} width='100px' />"; 
         echo "</td><td valign='top'>"; 

         echo "<span style='font-family:verdana;font-size:10pt;'><b>" . $values['name'] . "</b></span><br>"; 
         echo "<span style='font-family:verdana;font-size:9pt; color:#666666; line-height:7pt;'>".$time[0]." kl ".substr($tid[0],0,5)."<br>"; 
         echo "Place: " . $values['location'] . "<br>".$values['attending_count']. " attendings.<br>"; 
         echo "<a href='https://www.facebook.com/events/".$values['eid']."/' target='_blank'><br>More info</a></span>"; 

         echo "</td></tr></table><br>"; 

       echo "</div>"; 
       echo "</div>"; 
     } 

} 

?> 

date_default_timezone_set('America/Los_Angeles'); :

나는 아래의 코드를 사용합니다.

이유를 아는 사람이 있습니까? 미리 감사드립니다.

UPDATE -> SOLUTION

변경 if ($time[0] > date("Y-m-d"))if ($time[0] >= date("Y-m-d")) 및 오늘의 이벤트를 표시합니다.

답변

0

FQL 함수 now()을 사용하면 오늘 시작되어 현재 시간보다 이전 인 이벤트를 얻지 못합니다. 대신 대신 기능 now()의 자신의 변수 $now를 사용

$now = strtotime('today'); 
$fql = "SELECT ... WHERE ... start_date >= $now ..."; 

반환 타임 스탬프 (start_dateend_date), UTC 시간대에 그래서 당신은 당신의 시간대에 포맷하고자하는 경우 :

$start = new DateTime('@'.$values['start_time']); 
$start->setTimezone(new DateTimezone('America/Los_Angeles')); 
$start->format('Y-m-d H:i:s'); 

또한 다음 링크를 참조하십시오. Platform Migration: Events Timezone Support

+0

문제를 해결 방법으로 업데이트했습니다. :) – Treps