Intereting Posts
отправка сообщения из приложения iOS в php-скрипт не работает … Простое решение похоже как обрабатывать ресурсы URL-адреса Rp Не удалось установить приложение Laravel для EC2 Google игнорирует мой robots.txt Как запустить shortcode перед загрузкой header.php в wordpress? CakePHP – общее количество разбиения на страницы отличается от фактического количества при использовании DISTINCT Является ли htmlspecialchars достаточным для предотвращения SQL-инъекции переменной, заключенной в одинарные кавычки? jQuery – Загрузка формы отправки в DIV родительской страницы (?) Почему я получаю сообщение об ошибке «4020: информация, полученная с неверного IP-адреса». От SagePay? PHP curl изменяет Content-Type на application / x-www-form-urlencoded. Не следует этого делать Справка по рекурсии PHP, необходимая для создания древовидной структуры Анонимные функции pre PHP 5.3.0 могу ли я объявить переменную в запросе? добавление информации в регистрационную форму php Значение $ this-> в CakePHP

Угадайте часовой пояс пользователя в PHP

Что касается 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>