Учитывая смещение UTC и дату, как мы можем найти его дату в формате UTC в PHP? - PullRequest
1 голос
/ 23 февраля 2011

Например, у меня есть дата в этом формате, и его смещение UTC равно +3:

2011-02-23 05:00:00

Так что его время UTC на самом деле:

2011-02-23 02:00:00

Но какой самый простой способ сделать это преобразование в PHP?

Я думал об использовании класса DateTimeZone, но, как вы можете видеть, у меня есть только смещение, ноне название часового пояса.А для создания DateTimeZone объекта требуется имя часового пояса.

Может быть, есть и лучшие способы без использования DateTimeZone класса.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 23 февраля 2011

Можно просто изменить дату на основе смещения. Если вы хотите изменить это на другие часовые пояса, создайте дату с часовым поясом UTC.

$date = new DateTime('2011-02-23 05:00:00', new DateTimeZone('UTC'));
$date->modify(sprintf('%s%d hours', $offset < 0 ? '+' : '-', $offset));

Примечание: это будет работать, даже если смещение является строкой. то есть "-3" или "+3"

Тогда, например, если вы хотите увидеть это время в Мельбурне, Австралия.

$date->setTimezone(new DateTimeZone('Australia/Melbourne'));
echo $date->format('c');
1 голос
/ 23 февраля 2011

Для этого вы можете использовать date () и strtotime ().

$in = "2011-02-23 05:00:00";
$offset = "-3 hours";
$out = date('Y-m-d H:i:s',strtotime("$in $offset"));

Также приятно отметить, что при этом вы не ограничены тем, что вы компенсируете. Функция strtotime () позволяет вам делать разные замечательные вещи, такие как «-2 недели +3 дня ...» и т. Д.

Вы также можете получить любой формат даты из date () или просто использовать strtotime () для получения метки времени.

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