/ / Фейсбук SDK повертає неправильні часи для подій - php, facebook-graph-api, timestamp, facebook-php-sdk, unix-timetamp

Facebook SDK повертає неправильні часи для подій - php, facebook-graph-api, timestamp, facebook-php-sdk, unix-timestamp

У мене є веб-сайт, на якому відображаються події зСторінка Facebook власника веб-сайту. Кілька тижнів тому хтось помітив, що часи подій на веб-сайті виявляються неправильно, але вони були правильні протягом кількох років. Так що я в основному намагаюся з'ясувати, в чому проблема.

Ось приклад

Подія X має часові позначки часу початку 2017-12-18T17: 00: 00-0500. Ця дата є правильною, і цей час - 1700, або 5:00 - правильний час.

Тож у мене є цей код для перетворення часової позначки в те, що я можу показати

$start_time = date("g:i a", strtotime($event["start_time"]));

Це повертає час 10:00 вечора

У мене така ж проблема, коли кінцевий час перетворюється неправильно.

Я використовую цей код для перетворення дати (використовуючи ту саму часову позначку):

$start_date = date("l, F j, Y", strtotime($event["start_time"]));

Це повертає правильну дату, що ще більше бентежить мене, оскільки якщо дата перетвориться правильно, як час не перетвориться правильно?

Чи можете мені хтось допомогти отримати час на конверсію, щоб я міг повернути ці події на веб-сайті?

Відповіді:

1 для відповіді № 1

Це різна проблема часового поясу.

У вас є дата з часовим поясом -05:00 але, date("P") Вихід, часовий пояс вашого сервера +00:00. Ви можете використовувати DateTime клас для перетворення часу дати у бажаний часовий пояс.

// convert time to datetime instance
$timestamp = strtotime($event["start_time"]);
$datetime = new DateTime;
$datetime->setTimestamp($timestamp);

// set timezone to US/Eastern, Eastern Standard Time (EST), UTC -5
$datetime->setTimezone(new DateTimeZone("US/Eastern"));

// output datetime format
$datetime->format("g:i a");
$datetime->format("l, F j, Y");