Еще один вопрос о дате и времени по Гринвичу - PullRequest
2 голосов
/ 22 июня 2011

Я получаю канал из Календаря Google. Время начала события в этом формате:

StartDate: 2011-06-25T18:00:00.000-05:00

Я понимаю, что -05: 00 - это смещение часового пояса. Мне нужно, чтобы вышеупомянутое было помещено в базу данных MySQL по времени GMT. Я только что прочитал о date () и gmdate () , но я боюсь, что я довольно новичок в этом, и я не получаю нужные результаты.

Прямо сейчас приведенный выше код заканчивается в моем столбце datetime в mySQL:

2011-06-25 18:00:00

Мне нужно, чтобы выше было:

2011-06-25 23:00:00

Но мне нужен динамический способ сделать это, чтобы любой пользователь с другим часовым поясом получал правильные результаты - IE: мне нужно, чтобы функция была достаточно умной, чтобы читать смещение часового пояса и вносить необходимые изменения независимо от смещения. Я надеюсь, что есть функция PHP, которая это уже делает?

Спасибо за любую помощь!

Ответы [ 3 ]

2 голосов
/ 22 июня 2011

Если вы используете strtotime, вы можете сделать это:

<?
date_default_timezone_set('UTC');
$date = strtotime('2011-06-25T18:00:00.000-05:00');
echo date('Y-m-d H:i:s',$date);

Это приводит к моей системе в:

2011-06-25 23:00:00
1 голос
/ 22 июня 2011

Самый простой способ - использовать DateTime и DateTimeZone - это также совместимо с PHP 5.2.x.

$date = new DateTime('2011-06-25T18:00:00.000-05:00');
$date->setTimezone(new DateTimeZone('UTC'));
echo $date->format('Y-m-d H:i:s');

Это решение не требует изменения настроенного часового пояса PHP на date.timezone или date_default_timezone_set().

1 голос
/ 22 июня 2011

Примерно так будет, наверное, работать:

// get date with time zone
$date = new DateTime('2011-06-25T18:00:00.000-05:00');

// get time zone offset in minutes
$offset = $date->getOffset();

// get date without offset
$date2 = new DateTime($date->format('Y-m-d\TH:i:s'));

// apply offset to get UTC time
$date2->add(new DateInterval('PT' . $offset . 'M'));

возможно, это немного сложно, но я не "PHP парень", так что ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...