Я пытался решить эту проблему и потратил часы, чтобы найти причину, по которой это происходит, безрезультатно.Неустранимая ошибка: исключить исключение «Исключение» с сообщением «DateTimeZone ::?
Я действительно не знаю, что я делаю неправильно!
Я пытаюсь создать простую разницу во времени, используя timezones в PHP. Мне нужно разрешить пользователям выбирать оба местоположения на странице. для этого я использую два раскрывающихся списка, которые будут иметь в них все временные интервалы.
Каждый раз, когда я запускаю код/страницы на моем сервере, я получаю эту ошибку:
Fatal error: Uncaught exception 'Exception' with message 'DateTimeZone::__construct() [datetimezone.--construct]: Unknown or bad timezone (origin_tz)' in /home/a1385482/public_html/timediff.php:204
Stack trace:
#0 /home/a1385482/public_html/timediff.php(204): DateTimeZone->__construct('origin_tz')
#1 /home/a1385482/public_html/timediff.php(215): get_timezone_offset('origin_tz', 'remote_tz')
#2 {main} thrown in /home/a1385482/public_html/timediff.php on line 204
Вот полный код страницы:
<?php
echo "Version: " . phpversion();
?>
<form method="post" action="">
<select name="timezone2" id="timezone2" class="timezone2">
<option value="Pacific/Midway">(GMT-11:00) Midway Island, Samoa</option>
.. snip ..
</select>
<select name="timezone1" id="timezone1" class="timezone1">
<option value="Pacific/Midway">(GMT-11:00) Midway Island, Samoa</option>
.. snip ..
</select>
<input type="submit" name="submit" value="send"/>
</form>
<?php
if(isset($_POST['submit']))
{
//be sure to validate and clean your variables
$timezone1 = htmlentities($_POST['timezone1']);
$timezone2 = htmlentities($_POST['timezone2']);
//then you can use them in a PHP function.
function get_timezone_offset($origin_tz, $remote_tz) {
$timezone1 = new DateTimeZone($origin_tz);
$timezone2 = new DateTimeZone($remote_tz);
$datetime1 = new DateTime("now", $timezone1);
$datetime2 = new DateTime("now", $timezone2);
$offset = $timezone1->getOffset($datetime1) - $timezone2->getOffset($datetime2);
return $offset;
}
$offset = get_timezone_offset('origin_tz', 'remote_tz');
echo $offset/3600;
}
?>
может кто-то пожалуйста, пролить свет на это поскольку я застрял на этом около 8 часов.
Пожалуйста, прекратите размещение тонн не имеет значение код. Уменьшите его до минимума, необходимого для воспроизведения проблемы. – deceze
Вы вызываете 'get_timezone_offset' с 2 строками. Я не думаю, что ''origin_tz'' является допустимым часовым поясом. –
@deceze, ПОЧЕМУ это нерелевантный код ?! Я использую тот же самый код (не несущественный код), и тот же самый код создает ошибку/проблему! –