У мене є веб-сайт, на якому відображаються події зСторінка 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");