[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: корректный показ времени для каждой страны
Страницы: 1, 2
Raymond
К примеру, я нахожусь в России, и время на моем сервере 20:00.
Я вывожу его на главной странице сайта.У людей, которые живут в России, будет показываться 20:00.
Надо полагать, что сервер не автоматически преобразует время для посетителей, исходя из страны, в которой они живут, и в тот момент когда у них может быть 16:00, сайт все равно будет показывать 20:00? подскажите, я правильно понял?

И если да, то как обычно реализуется корректный показ времени исходя из страны пользователя? Объясните, пожалуйста, хотя бы в двух словах.
walerus
Raymond
Относительно ГЕО IP, больше вроде как хз
inpost
walerus
geoip не всегда свежие базы. Часто Unknown, Europe и т.д.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Гость_Invis1ble
IP, настройки профиля, локальное время клиента
Another Reality
Javascript необходим тебе для такого, он может.


<script type="text/javascript">
window.onload = function(){
(function(){
var date = new Date();
var time = date.getHours()+':'+date.getMinutes()+':'+date.getSeconds();
document.getElementById('time').innerHTML = time;
window.setTimeout(arguments.callee, 1000);
})();
};
</
script>
<
div id="time"></div>
TranceIT
Another Reality
Date вроде как получает время установленное на стороне клиента. А не относительно geoip, часовых поясов и т.д. Или я не прав?

_____________
Безвозмездно помогаю только тем, кто сам пытается что-то сделать.

Остальным за WMR
Даже если там 10 строк кода!
Даже если мне это ничего не стоит!
Даже если вы нуб!

user posted image
killer8080
Цитата (TranceIT @ 16.11.2016 - 11:20)
Date вроде как получает время установленное на стороне клиента. А не относительно geoip, часовых поясов и т.д. Или я не прав?

а разве не это нужно ТС? Про geoip он не спрашивал. smile.gif
TranceIT
killer8080
1) Я живу в Крыму. На основной машине стоит винда, а так как мелкомягкие не признают Крым, то винда ставит украинское время. Т.е. Сейчас на ПК 14:45, а по факту 13:45. А летом еще плюс час разницы.

2) Я могу руками поставить неправильную дату и отключить синхронизацию. Я так делал когда взламывал GTA V. Там надо было определенную дату ставить. И какая-то старая пробная версия nod32 ломалась переводом часов назад. На год перевел и год пользуешься нахаляву. Может быть и другая необходимость.

3) Неправильно установлен часовой пояс. Попробуй поставить винду и линух параллельно. И установи разные часовые пояса. У тебя биос с ума сойдет.

4) Сдохла батарейка на материнке.

_____________
Безвозмездно помогаю только тем, кто сам пытается что-то сделать.

Остальным за WMR
Даже если там 10 строк кода!
Даже если мне это ничего не стоит!
Даже если вы нуб!

user posted image
killer8080
Цитата (TranceIT @ 16.11.2016 - 13:48)
1) Я живу в Крыму. На основной машине стоит винда, а так как мелкомягкие не признают Крым, то винда ставит украинское время. Т.е. Сейчас на ПК 14:45, а по факту 13:45. А летом еще плюс час разницы.

Я то же, только винда не решает за меня какой часовой пояс мне выбрать wink.gif
Цитата (TranceIT @ 16.11.2016 - 13:48)
2) Я могу руками поставить неправильную дату и отключить синхронизацию. Я так делал когда взламывал GTA V. Там надо было определенную дату ставить. И какая-то старая пробная версия nod32 ломалась переводом часов назад. На год перевел и год пользуешься нахаляву. Может быть и другая необходимость.

конечно можешь и что? Будет отображаться твоё локальное время.
Цитата (TranceIT @ 16.11.2016 - 13:48)
3) Неправильно установлен часовой пояс. Попробуй поставить винду и линух параллельно. И установи разные часовые пояса. У тебя биос с ума сойдет.

4) Сдохла батарейка на материнке.

В таком случае пользователя должна волновать настройка его системы, а не время на сайте. Это уже вторично, если юзера устраивает такой расклад, это его проблемы.

PS мой IP сейчас 195.154.69.175 какой у меня часовой пояс? wink.gif
TranceIT
killer8080
Это все верно, только вот пользователю срать на все это.
Если пользователь увидит, что сайт определил его время 16:00, а у него сейчас 14, то он не будет разбираться ни в чем. Он посчитает что сайт говно, а программисты дебилы. Уйдет и больше никогда не вернется.
А использовать такое время для записи каких-то событий или ведения статистики нельзя категорически.

_____________
Безвозмездно помогаю только тем, кто сам пытается что-то сделать.

Остальным за WMR
Даже если там 10 строк кода!
Даже если мне это ничего не стоит!
Даже если вы нуб!

user posted image
Another Reality
Цитата (TranceIT @ 16.11.2016 - 11:20)
Another Reality
Date вроде как получает время установленное на стороне клиента. А не относительно geoip, часовых поясов и т.д. Или я не прав?

У ТС проблема с определением клиентского времени, он не говорил о какой-то конкретной задаче и условиях, вот я и предложил вариант.
Ну можно еще подстраховаться с geoip, а потом гадать, какое из них правильное.
Как уже сказал Invis1ble - есть настройки часовых поясов в профиле.

Но в 99% случаев время на клиентской стороне будет верным.
killer8080
Цитата (TranceIT @ 16.11.2016 - 14:50)
killer8080
Это все верно, только вот пользователю срать на все это.
Если пользователь увидит, что сайт определил его время 16:00, а у него сейчас 14, то он не будет разбираться ни в чем. Он посчитает что сайт говно, а программисты дебилы. Уйдет и больше никогда не вернется.

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

Цитата (TranceIT @ 16.11.2016 - 14:50)
А использовать такое время для записи каких-то событий или ведения статистики нельзя категорически.

безусловно, об этом речи не было, вопрос был только об отображении времени пользователю. Вообще ТС-у следовало бы конкретизировать задачу, неясно что за время и для чего оно отображается на сайте. Если это как на форуме, показать время публикации поста, то ИМХО следует делать так:
1 пользователю предоставлять возможность задать свой TZ в настройках профиля или для анонимов сохранить в куки.
2 если пользователь не задал настройки вручную, пытаться детектировать через JS
3 в остальных случаях выводить время в дефолтном часовом поясе.

geoip не лучший вариант, на него вообще полагаться нельзя, хотя тоже можно использовать как крайний вариант.
TranceIT
Цитата (killer8080 @ 16.11.2016 - 13:50)
Врядли, ведь в треё у него то же время отображается, возмущение будет скорее наоборот, когда время на его компе будет не совпадать с отображаемым на странице.

Думаю тут 50\50.

_____________
Безвозмездно помогаю только тем, кто сам пытается что-то сделать.

Остальным за WMR
Даже если там 10 строк кода!
Даже если мне это ничего не стоит!
Даже если вы нуб!

user posted image
Raymond
Цитата (killer8080 @ 16.11.2016 - 15:50)
Вообще ТС-у следовало бы конкретизировать задачу, неясно что за время и для чего оно отображается на сайте. Если это как на форуме, показать время публикации поста, то ИМХО следует делать так:
1 пользователю предоставлять возможность задать свой TZ в настройках профиля или для анонимов сохранить в куки.
2 если пользователь не задал настройки вручную, пытаться детектировать через JS
3 в остальных случаях выводить время в дефолтном часовом поясе.

geoip не лучший вариант, на него вообще полагаться нельзя, хотя тоже можно использовать как крайний вариант.


Спасибо тебе и всем ответившим, теперь понятно, куда копать
(благодарности, к сожалению, отправлять не могу - не дорос еще).

Вот, на всякий случай, то, что я хотел конкретно, хоть ответы я уже и получил, но может еще чего добавите:


На многих сайтах есть отображение времени последнего визита пользователя.

К примеру, я нахожусь в Москве , захожу на страницу к другу Васе в ВК , и вижу там "Был сегодня в 15:00".
Другой человек, Жора, живущий в стране, где время идет на 2 часа вперед, тоже заходит к Васе и видит "Был сегодня в 17:00". То есть , время отображается с учетом временной зоны пользователя.

Теперь возьмем мой ущербный сайт, где серверное время на данный момент - 19:40 (по Москве).
Жора заходит на него, оставляет комментарий. У Жоры сейчас 21:40, но время комментария на сайте показывается, как 19:40.
Парень вспоминает, что он, вроде бы, ничего не курил, а значит это с сайтом что-то не так. Он уходит и никогда больше не возвращается.

Так вот, как реализовать показ подобных вещей, чтобы все отображалось как следует, исходя из времени пользователя, а не из времени сервера?
Invis1ble
Цитата (Raymond @ 16.11.2016 - 19:48)
Так вот, как реализовать показ подобных вещей, чтобы все отображалось как следует, исходя из времени пользователя, а не из времени сервера?

На сервере хранить время в UTC, выводить с учётом смещения для конкретного юзера. Смещение вычислять на основе предложенных выше вариантов.

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.