Обратное смещение часового пояса - PullRequest
2 голосов
/ 23 мая 2010

У меня есть имя часового пояса, и я хочу, чтобы имя часового пояса удваивало его смещение.

Например, Азия / Дубай +4, я хочу изменить это значение на -4 ... и разрешить его до EDT

Язык: PHP

Вот пример того, как это будет выглядеть:

$timezone = "Asia/Dubai"
$offset = $timezone->getOffset();
$offset 0 - $offset;
$timezone = $offset->getTimeZone();

Выход: EDT

Ответы [ 2 ]

0 голосов
/ 15 августа 2018
$timezone = "Asia/Dubai";
$timezone = new \DateTimeZone($timezone);
$dateUTC = new \DateTime('now', new \DateTimeZone('UTC'));
// Offset from UTC in seconds
$offset = $timezone->getOffset($dateUTC);
// Reverse offset and convert to hours
$timezone = new \DateTimeZone($offset * -1 / 60 / 60);
echo $timezone->getName();
0 голосов
/ 12 июня 2011

(PHP 5> = 5.2.0)

Чтобы получить смещение от UTC

<?php
$offUTC = new DateTime('now', new DateTimeZone('Asia/Dubai'));

echo $offUTC->getOffset(); // in seconds
echo ($offUTC->getOffset()/3600); // in hours
?>

Чтобы получить разницу во времени между двумя произвольными зонами

<?php
$timezoneDubai = new DateTimeZone("Asia/Dubai");
$timezoneEDT = new DateTimeZone("America/New_York"); // note EDT may work, support is not clear

$datetimeDubai= new DateTime("now", $timezoneDubai);
$datetimeEDT = new DateTime("now", $timezoneEDT);

$timeOffset = $datetimeEDT->getOffset($datetimeDubai);

echo $timeOffset; // in seconds
echo ($timeOffset/3600) // in hours
?>

Я не уверен на 100%, какова ваша цель, но это должно вам помочь.Также не стесняйтесь проверить больше функций DateTime здесь: http://www.php.net/manual/en/book.datetime.php

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