Что касается PHP5.3 (я думаю), это стало требованием установить date.timezone
в файле php.ini
или быть установленным во время выполнения с помощью функции date_default_timezone_set()
. Когда вы не установите это значение, вы получите ошибку, что-то вроде этого:
PHP Warning : date () : Нельзя полагаться на настройки часового пояса системы. Вы должны использовать параметр date.timezone или функцию date_default_timezone_set (). Если вы использовали какой-либо из этих методов, и вы все еще получаете это предупреждение, скорее всего, вы ошиблись с идентификатором часового пояса. Мы выбрали 'America / New_York' для '-4.0 / DST' вместо FILE в строке LINE .
Мне было интересно, какой механизм он использует, чтобы угадать часовой пояс, поскольку он кажется довольно точным, и я хотел знать сам, поэтому я могу представить эту ошибку более дружелюбным образом для пользователя или позволить им принять это как правильный часовой пояс.
Я бы, вероятно, использовал date_default_timezone_get()
:
string date_default_timezone_get ( void )
В порядке предпочтения эта функция возвращает часовой пояс по умолчанию:
- Чтение часового пояса с использованием функции date_default_timezone_set () (если есть)
- Чтение переменной окружения TZ (если не пусто) (до PHP 5.3.0)
- Чтение значения параметра date.timezone ini (если установлено)
- Запрос операционной системы хоста (если поддерживается и разрешено ОС)
http://www.php.net/manual/en/function.date-default-timezone-get.php
Подход Майка дает вам часовой пояс веб-сервера. Я считаю, что вы пытаетесь получить часовой пояс пользователя. Я написал функцию с использованием jQuery и PHP. Это проверено и работает!
На странице PHP, где вы хотите иметь часовой пояс в качестве переменной, используйте этот фрагмент кода где-то рядом с верхней частью страницы:
<?php session_start(); $timezone = $_SESSION['time']; ?>
Это будет читать переменную сеанса «время», которую мы сейчас собираемся создать.
На этой же странице в первую очередь нужно включить jQuery:
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
Также в разделе ниже jQuery вставьте это:
<script type="text/javascript"> $(document).ready(function() { if("<?php echo $timezone; ?>".length==0){ var visitortime = new Date(); var visitortimezone = "GMT " + -visitortime.getTimezoneOffset()/60; $.ajax({ type: "GET", url: "http://domain.com/timezone.php", data: 'time='+ visitortimezone, success: function(){ location.reload(); } }); } }); </script>
Вы можете или не заметили, но вам нужно изменить URL-адрес на ваш фактический домен.
Одна последняя вещь. Вы, наверное, задаетесь вопросом, что такое heck timezone.php. Ну, это просто так: (создайте новый файл с названием timezone.php и укажите на него с указанным выше URL-адресом)
<?php session_start(); $_SESSION['time'] = $_GET['time']; ?>
Если это работает правильно, он сначала загрузит страницу, выполнит JavaScript и перезагрузит страницу. Затем вы сможете прочитать переменную $ timezone и использовать ее для вашего удовольствия! Он возвращает текущее смещение часовой пояс UTC / GMT (GMT -7) или любой часовой пояс, в котором вы находитесь.
ура
</Westy92>