События полного календаря отрисовываются из БД без учета часового пояса - PullRequest
1 голос
/ 30 марта 2019

В настоящее время у меня есть приложение fullcalendar, которое я настроил с использованием PHP и MYSQL (AWS RDS).

Время начала и окончания события сохраняется в базе данных в виде строк, похожих на Fri Mar 29 2019 09:00:00 GMT-0700 (Pacific Daylight Time), которыеиз свойств event.start и event.end.

Затем они загружаются с использованием load.php (называемого events: load.php), который выглядит следующим образом:

<?php
include 'dbconfig.php';

$conn = $dbConnection;
$query = "SELECT * FROM Events ORDER BY id";

$statement = $conn->prepare($query);
$statement->execute();

$data = $statement->fetchAll();
$results = array();

foreach($data as $row) {
    $results[] = array(
        'id'   => $row["id"],
        'title'   => $row["title"],
        'resourceId' => $row["resource"],
        'start'   => $row["start_event"],
        'end'   => $row["end_event"]
    );
}

echo json_encode($results);

На этом этапеони отображают;однако, они всегда показывают на 7 часов раньше, чем должны (например, 09:00:00 превращается в 16:00:00).

Я предполагаю, что это потому, что когда данные поступают из базы данных, они пренебрегают часовым поясомкаким-то образом, но когда я меняю часовой пояс с помощью timezone: 'UTC', ничего не происходит.

Любая помощь / предложения будут оценены, и спасибо!

1 Ответ

2 голосов
/ 30 марта 2019

Если ваши строки даты имеют формат, который вы описали в своем вопросе, например,

Fri Mar 29 2019 09:00:00 GMT-0700 (Pacific Daylight Time)

Вы должны иметь возможность разбивать их на DateTime объекты, используя date_create_from_format например,

$date_string = 'Fri Mar 29 2019 09:00:00 GMT-0700 (Pacific Daylight Time)';
$date = date_create_from_format('D M d Y H:i:s \G\M\TO+', $date_string);

echo $date->format('Y-m-d H:i:s');

Выход:

2019-03-29 09:00:00

Демонстрация на 3v4l.org

...