Определение часового пояса

yeaahhh

Старатель
Регистрация
8 Май 2008
Сообщения
278
Реакции
11
Друзья, хочу сделать универсальное время на сайте.. Чтобы для каждого пользователя время было индивидуально - соответствовало его текущему местному времени..
Подскажите, как лучше организовать?
Ручное указание времени пользователем при регистрации - отпадает..
Поискав в инете, нашёл getTimezoneOffset.. Реализуется ли это через данную функцию? или может быть есть более лцчший способ? Заранее большое спасибо!
 
Код:
<body onLoad="myclock()">
<script language="JavaScript">
<!--
function myclock()
{
ndata=new Date()
hours= ndata.getHours();
mins= ndata.getMinutes();
secs= ndata.getSeconds();
if (hours < 10) {hours = "0" + hours }
if (mins < 10) {mins = "0" + mins }
if (secs < 10) {secs = "0" + secs }
datastr =hours+":" + mins+":" +secs
document.clockexam.clock.value = " "+datastr;
setTimeout("myclock()", 1000);
}
-->
</script>
<form name="clockexam"><input type="text" size="9" name="clock"></form>

повторяет точное время каждого компа=) универсальнее некуда=)
 
zavu, во-первых вы немного перепутали язык, которому посвящен данный раздел )))
во-вторых что будет если у посетителя на компе неверно настроено время?

ТС, если нужно для чего-то простого, к примеру вывода приветствия в стиле "добрый день/вечер" - тогда действительно наверное проще всего использовать жабоскрипт

если для чего-то более сложного, т.е. если время посетителя будет использовать ваш серверный скрипт (хз - например цена доставки в инет-магазине может зависить от часового пояса или времени суток) то лучше использовать часовые пояса (timezone) - и именно их хранить в базе, а выводить просто добавляя к серверному времени разницу для часового пояса

возможно вам поможет вот это


учтите что определение часового пояса например по GeoIP вовсе не панацея - к примеру клиент может использовать прокси
 
сорри=) просто вопрос стоял в общем о способах, вот и пришел в голову самый простой. Тем более что вручную юзеру не нужно указывать свое время...
А насчет таймзоны, некоторые хостеры не дают возможности корректировать серверное время почему-то... У меня такой америкосовский попался, и для обычного сайта ява-вариант - едва ли не единственная возможность установить часы.
 
Друзья, хочу сделать универсальное время на сайте.. Чтобы для каждого пользователя время было индивидуально - соответствовало его текущему местному времени..
....Ручное указание времени пользователем при регистрации - отпадает..
Поискав в инете, нашёл getTimezoneOffset..

Данная функция ИМХО не подходит так как использует время сервера, а нам надо время у пользователя.

Остается только два варианта:
1. Как уже было описано, узнать время на машине пользователя через JS;
2. Используя IP-адрес пользователя определить: его страну, согласно стране определить часовой пояс, сделать коррекцию и выдать время пользователя.

Таким образом удоббней использовать JS+PHP. А дальше все зависит от задачи.
Под хайдом ссылка на базу определения города и страны по IP-адресу
 
Чушь все это GEO IP, актуально только для крупных городов...

К примеру, дома у меня везде куда бы я не заходил пишет по GEO IP Барнаул, на сам же деле Барнаул от моего места нахождения в несколько тысяч километров, ну черт с ним здесь еще ладно часовой пояс единый еще можно смериться.

Но на работе Инет вообще через Новосибирского провайдера, как следствия везде мне говориться что я мать его коренной Новосибирец. И разница во времени получается уже целый час, так как другой часовой пояс.

Короче Хреновы провайдеры экономисты мать их)))

В общем GEO IP далеко не панацея в этой задачи.

Тут нужен комплексный подход:
1) GEO IP (минус это что пользователь может сидеть через проксю)
2) Определения системного времени в ОС с помощью JS (это уже ближе к истине но минус в том что системные часы могут в момент получения времени идти не верно).
3) Спросить у пользователя прямо сколько у него времени (самы правильный вариант, минус это то что человек может соврать)

Я бы сделал так:
1) Спросил у пользователя с какого он города, из этого узнал бы время в городе (этот пункт можно не использовать, но он самый правильный)
2) Потом узнал бы время по GEO IP
3) Узнал бы время с помощью JS

Если время в трех одинаково значит все четко, это наш клиент.

Если 1 пункт отличается от 2 и 3 пользователь пиздбалабол, минус ему в уровень доверия. Время получаем по 2 и 3 пункту так как они равны. Все попался, наш клиент.

Если 2 отличается от 1 и 3, Х-м, чего то пользователь не в своем городе заимел IP адрес. Варианты прокси, VPN провайдер мудак-экономка :) и т.д. В общем при этом варианте пользователь может шифруется (если исключить вариант с экономным провайдером). Время получаем по 1 и 3 пункту так как они равны. Поверим на слово пользователю и будем надеется что время в ОС идет правильно.

Если пункт 3 отличается от 1 и 2, то у пользователя сбилось время в ОС либо он балобол и провайдер у него экономка. Ну как варинт пользователь ушибленный на всю голову и живет по не местному времени или просто в командировке забыл перевести время. Берем время с 1 и 2 пункта.

Если все три варианта различны, чего то х-ня какая то, минус в уровень доверия. Не задумываясь берем время с 3 пункта.


Ну вот как то так. При твоем раскладе у тебя 2 варианта проверки что очень сужает плацдарм для маневров. Желательно все же делать не менее трех проверок и на основе их уже делать какие то заключения. При таком раскладе как у тебя я бы остановился все же на JS.
 
Просто я пишу соц. сеть.. Время хочу получать для отображения сообщений на стенах и т.п. с правильным для пользователя(гостя) временем..
Для зарегистрированных сделал пункт, в котором они указывают свой часовой..
А вот для незарегенных - думаю, как будет лучше..
Спасибо вам большое за советы!
 
А для незареганых пиши просто: "Московское время= {тут время сервака по москве}... (хотите знать Ваше время? Регистрируйтесь)" Дальше они сами разберутся... :)
 
во-вторых что будет если у посетителя на компе неверно настроено время?
это будут проблемы посетителя, аналогичный вопрос: "что будет если у пользователя монитор расширением 300х400?". Нельзя что бы из за меньшинства, большинство лишалось каких то фич. Кроме того можно например отсеять, а точнее практически свести людей с неправильным отображением времени к нулю, например проверкой даты, что бы разница между серверным временем и временем клиента была не больше 24 часов, и если разница большая то выводить пользователю серверное время.

А вот для незарегенных - думаю, как будет лучше..
как вариант, корректировать временной пояс, основываясь на клиентском времени, учитываю разницу во времени как я описал выше.
 
это будут проблемы посетителя, аналогичный вопрос: "что будет если у пользователя монитор расширением 300х400?".
вообще-то я тоже сторонник определения времени несколькими вариантами, и в ссылке которую предлагал ТС-у был вариант, похожий на тот что описал trool - сравниваем время по ип и на компе пользователя, и в случае если они отличаются ненавязчиво уточняем у пользователя - типа "мы не смогли определить который час в вашем городе, то ли 18-00 то ли 19-00, может подскажите?"


как вариант, корректировать временной пояс, основываясь на клиентском времени, учитываю разницу во времени как я описал выше.

растолкуйте пожалуйста свое последнее предложение - а то из него получается что trool и -=Xardas=- это один и тот же человек
 
Назад
Сверху