PHP:Facebook事件API start_time dons';t今天不显示';s事件


PHP: Facebook Event API start_time doesn't show today's events

我正在将Facebook事件获取到我的网站,但今天的事件提前一天消失了。如果今天有一个活动,它今天不会出现在我的网站上。今天00:00,该事件从视图中消失。

我使用以下代码:

<?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');不起作用。

有人知道为什么吗?提前谢谢。

更新->解决方案

if ($time[0] > date("Y-m-d"))更改为if ($time[0] >= date("Y-m-d")),它将显示从今天开始的事件。

如果使用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');

您还应该查看以下链接:平台迁移:事件时区支持