Raymond
15.11.2016 - 20:10
К примеру, я нахожусь в России, и время на моем сервере 20:00.
Я вывожу его на главной странице сайта.У людей, которые живут в России, будет показываться 20:00.
Надо полагать, что сервер не автоматически преобразует время для посетителей, исходя из страны, в которой они живут, и в тот момент когда у них может быть 16:00, сайт все равно будет показывать 20:00? подскажите, я правильно понял?
И если да, то как обычно реализуется корректный показ времени исходя из страны пользователя? Объясните, пожалуйста, хотя бы в двух словах.
walerus
15.11.2016 - 22:38
Raymond
Относительно ГЕО IP, больше вроде как хз
inpost
16.11.2016 - 03:57
walerusgeoip не всегда свежие базы. Часто Unknown, Europe и т.д.
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Гость_Invis1ble
16.11.2016 - 03:59
IP, настройки профиля, локальное время клиента
Another Reality
16.11.2016 - 11:09
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
16.11.2016 - 11:20
Another RealityDate вроде как получает время установленное на стороне клиента. А не относительно geoip, часовых поясов и т.д. Или я не прав?
_____________
Безвозмездно помогаю только тем, кто сам пытается что-то сделать. Остальным за WMR
Даже если там 10 строк кода!
Даже если мне это ничего не стоит!
Даже если вы нуб!
killer8080
16.11.2016 - 13:35
Цитата (TranceIT @ 16.11.2016 - 11:20) |
Date вроде как получает время установленное на стороне клиента. А не относительно geoip, часовых поясов и т.д. Или я не прав?
|
а разве не это нужно ТС? Про geoip он не спрашивал.
TranceIT
16.11.2016 - 13:48
killer80801) Я живу в Крыму. На основной машине стоит винда, а так как мелкомягкие не признают Крым, то винда ставит украинское время. Т.е. Сейчас на ПК 14:45, а по факту 13:45. А летом еще плюс час разницы.
2) Я могу руками поставить неправильную дату и отключить синхронизацию. Я так делал когда взламывал GTA V. Там надо было определенную дату ставить. И какая-то старая пробная версия nod32 ломалась переводом часов назад. На год перевел и год пользуешься нахаляву. Может быть и другая необходимость.
3) Неправильно установлен часовой пояс. Попробуй поставить винду и линух параллельно. И установи разные часовые пояса. У тебя биос с ума сойдет.
4) Сдохла батарейка на материнке.
_____________
Безвозмездно помогаю только тем, кто сам пытается что-то сделать. Остальным за WMR
Даже если там 10 строк кода!
Даже если мне это ничего не стоит!
Даже если вы нуб!
killer8080
16.11.2016 - 14:35
Цитата (TranceIT @ 16.11.2016 - 13:48) |
1) Я живу в Крыму. На основной машине стоит винда, а так как мелкомягкие не признают Крым, то винда ставит украинское время. Т.е. Сейчас на ПК 14:45, а по факту 13:45. А летом еще плюс час разницы. |
Я то же, только винда не решает за меня какой часовой пояс мне выбрать
Цитата (TranceIT @ 16.11.2016 - 13:48) |
2) Я могу руками поставить неправильную дату и отключить синхронизацию. Я так делал когда взламывал GTA V. Там надо было определенную дату ставить. И какая-то старая пробная версия nod32 ломалась переводом часов назад. На год перевел и год пользуешься нахаляву. Может быть и другая необходимость. |
конечно можешь и что? Будет отображаться твоё локальное время.
Цитата (TranceIT @ 16.11.2016 - 13:48) |
3) Неправильно установлен часовой пояс. Попробуй поставить винду и линух параллельно. И установи разные часовые пояса. У тебя биос с ума сойдет.
4) Сдохла батарейка на материнке. |
В таком случае пользователя должна волновать настройка его системы, а не время на сайте. Это уже вторично, если юзера устраивает такой расклад, это его проблемы.
PS мой IP сейчас 195.154.69.175 какой у меня часовой пояс?
TranceIT
16.11.2016 - 14:50
killer8080Это все верно, только вот пользователю срать на все это.
Если пользователь увидит, что сайт определил его время 16:00, а у него сейчас 14, то он не будет разбираться ни в чем. Он посчитает что сайт говно, а программисты дебилы. Уйдет и больше никогда не вернется.
А использовать такое время для записи каких-то событий или ведения статистики нельзя категорически.
_____________
Безвозмездно помогаю только тем, кто сам пытается что-то сделать. Остальным за WMR
Даже если там 10 строк кода!
Даже если мне это ничего не стоит!
Даже если вы нуб!
Another Reality
16.11.2016 - 15:19
Цитата (TranceIT @ 16.11.2016 - 11:20) |
Another Reality Date вроде как получает время установленное на стороне клиента. А не относительно geoip, часовых поясов и т.д. Или я не прав? |
У ТС проблема с определением клиентского времени, он не говорил о какой-то конкретной задаче и условиях, вот я и предложил вариант.
Ну можно еще подстраховаться с geoip, а потом гадать, какое из них правильное.
Как уже сказал Invis1ble - есть настройки часовых поясов в профиле.
Но в 99% случаев время на клиентской стороне будет верным.
killer8080
16.11.2016 - 15:50
Цитата (TranceIT @ 16.11.2016 - 14:50) |
killer8080 Это все верно, только вот пользователю срать на все это. Если пользователь увидит, что сайт определил его время 16:00, а у него сейчас 14, то он не будет разбираться ни в чем. Он посчитает что сайт говно, а программисты дебилы. Уйдет и больше никогда не вернется. |
Врядли, ведь в треё у него то же время отображается, возмущение будет скорее наоборот, когда время на его компе будет не совпадать с отображаемым на странице.
Цитата (TranceIT @ 16.11.2016 - 14:50) |
А использовать такое время для записи каких-то событий или ведения статистики нельзя категорически. |
безусловно, об этом речи не было, вопрос был только об отображении времени пользователю. Вообще ТС-у следовало бы конкретизировать задачу, неясно что за время и для чего оно отображается на сайте. Если это как на форуме, показать время публикации поста, то ИМХО следует делать так:
1 пользователю предоставлять возможность задать свой TZ в настройках профиля или для анонимов сохранить в куки.
2 если пользователь не задал настройки вручную, пытаться детектировать через JS
3 в остальных случаях выводить время в дефолтном часовом поясе.
geoip не лучший вариант, на него вообще полагаться нельзя, хотя тоже можно использовать как крайний вариант.
TranceIT
16.11.2016 - 16:03
Цитата (killer8080 @ 16.11.2016 - 13:50) |
Врядли, ведь в треё у него то же время отображается, возмущение будет скорее наоборот, когда время на его компе будет не совпадать с отображаемым на странице. |
Думаю тут 50\50.
_____________
Безвозмездно помогаю только тем, кто сам пытается что-то сделать. Остальным за WMR
Даже если там 10 строк кода!
Даже если мне это ничего не стоит!
Даже если вы нуб!
Raymond
16.11.2016 - 19:48
Цитата (killer8080 @ 16.11.2016 - 15:50) |
Вообще ТС-у следовало бы конкретизировать задачу, неясно что за время и для чего оно отображается на сайте. Если это как на форуме, показать время публикации поста, то ИМХО следует делать так: 1 пользователю предоставлять возможность задать свой TZ в настройках профиля или для анонимов сохранить в куки. 2 если пользователь не задал настройки вручную, пытаться детектировать через JS 3 в остальных случаях выводить время в дефолтном часовом поясе.
geoip не лучший вариант, на него вообще полагаться нельзя, хотя тоже можно использовать как крайний вариант.
|
Спасибо тебе и всем ответившим, теперь понятно, куда копать
(благодарности, к сожалению, отправлять не могу - не дорос еще).
Вот, на всякий случай, то, что я хотел конкретно, хоть ответы я уже и получил, но может еще чего добавите:
На многих сайтах есть отображение времени последнего визита пользователя.
К примеру, я нахожусь в Москве , захожу на страницу к другу Васе в ВК , и вижу там "Был сегодня в 15:00".
Другой человек, Жора, живущий в стране, где время идет на 2 часа вперед, тоже заходит к Васе и видит "Был сегодня в 17:00". То есть , время отображается с учетом временной зоны пользователя.
Теперь возьмем мой ущербный сайт, где серверное время на данный момент - 19:40 (по Москве).
Жора заходит на него, оставляет комментарий. У Жоры сейчас 21:40, но время комментария на сайте показывается, как 19:40.
Парень вспоминает, что он, вроде бы, ничего не курил, а значит это с сайтом что-то не так. Он уходит и никогда больше не возвращается.
Так вот, как реализовать показ подобных вещей, чтобы все отображалось как следует, исходя из времени пользователя, а не из времени сервера?
Invis1ble
16.11.2016 - 23:26
Цитата (Raymond @ 16.11.2016 - 19:48) |
Так вот, как реализовать показ подобных вещей, чтобы все отображалось как следует, исходя из времени пользователя, а не из времени сервера? |
На сервере хранить время в UTC, выводить с учётом смещения для конкретного юзера. Смещение вычислять на основе предложенных выше вариантов.
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.