07.09.2015, 09:36
|
Новичок на форуме
|
|
Регистрация: 07.09.2015
Сообщений: 1
|
|
Вывод серверного времени на сайте
Всем привет!
Подскажите пожалуйста: как сделать чтобы отображалось время на сайте, при этом, чтобы если задал, например, GMT+6 - то оно и будет всегда показываться, независимо от того, какое время стоит на копьютере у пользователя.
Использую такое решение:
<SCRIPT Language="JavaScript">
function ClockTimeZone() {
var TimezoneOffset = 6 // указать нужное смещение по Гринвичу
var localTime = new Date();
var ms = localTime.getTime() + (localTime.getTimezoneOffset() * 60000) + TimezoneOffset * 3600000;
var time = new Date(ms);
var hour = time.getHours();
var minute = time.getMinutes();
var second = time.getSeconds();
var temp = "" + ((hour < 10) ? "0" : "") + hour;
temp += ((minute < 10) ? ":0" : ":") + minute;
temp += ((second < 10) ? ":0" : ":") + second;
document.getElementById('clock').innerHTML = temp;
setTimeout("ClockTimeZone()",1000);
}
onload = ClockTimeZone;
</SCRIPT>
Однако, при неправильном времени на компьютере пользователя, данный скрипт будет также выводить неправильное время. Как нужно переписать, чтобы он был привязан не ко времени с системы пользователя, а к серверному времени (с корректировкой +/- по GMT) ?
Спасибо!
|
|
07.09.2015, 09:45
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,116
|
|
McCloud,
нужно время сервера послать при открытии страницы, а потом к этому времени плюсовать время прошедшее с открытия страницы.
|
|
07.09.2015, 16:41
|
Профессор
|
|
Регистрация: 19.06.2010
Сообщений: 279
|
|
Может, не в тему, но если речь о дате и об онлайн заказах, то вот это неплохо:
date_default_timezone_set('Europe/Moscow');
Правильно я делаю, чтобы время было в любой части планеты мое?
|
|
07.09.2015, 17:24
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Эдди
|
Правильно я делаю, чтобы время было в любой части планеты мое?
|
В смысле времени сервера?
date_default_timezone_set('Europe/Moscow') это будет временем временем сервера для РНР, но не для SQL.
|
|
08.09.2015, 16:51
|
Профессор
|
|
Регистрация: 19.06.2010
Сообщений: 279
|
|
Сообщение от laimas
|
В смысле времени сервера?
date_default_timezone_set('Europe/Moscow') это будет временем временем сервера для РНР, но не для SQL.
|
Если я не буду использовать sql NOW(), а писать время только через php, то время sql мне не важно ведь?
Есть какие подводные камни?
|
|
08.09.2015, 17:44
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Если не использовать функции sql, которые работают по системному времени, пожалуйста. Но трудно представить запросы, в которых нужно сравнить дату/время с текущей, да еще с интервалами без NOW(). Можно конечно в запрос подставить и полученное от date().
Временная зона обычно доступна для установки через панель конфигурации сервера, то есть date_default_timezone_set(), это мера крайняя. Если нет, то в службу поддержки, они установят желаемую временную зону для сервера.
Если что, что установить временную зону sql можно: SET time_zone = 'Europe/Moscow', или скорректировать локальное время для установленной временной зоны: SET LOCAL time_zone='+hh:mm'.
|
|
09.09.2015, 18:28
|
Профессор
|
|
Регистрация: 19.06.2010
Сообщений: 279
|
|
Сообщение от laimas
|
Если не использовать функции sql, которые работают по системному времени, пожалуйста. Но трудно представить запросы, в которых нужно сравнить дату/время с текущей, да еще с интервалами без NOW(). Можно конечно в запрос подставить и полученное от date().
Временная зона обычно доступна для установки через панель конфигурации сервера, то есть date_default_timezone_set(), это мера крайняя. Если нет, то в службу поддержки, они установят желаемую временную зону для сервера.
Если что, что установить временную зону sql можно: SET time_zone = 'Europe/Moscow', или скорректировать локальное время для установленной временной зоны: SET LOCAL time_zone='+hh:mm'.
|
Мой провайдер (не буду называть) очень крутым себя считает и не идет ни на какие уступки. Сколько я с ними когда-то бился, чтобы позволили увеличить количество переменных в пост-массиве. Меня заверили, что ради меня любимого и моей безопасности они не будут этого делать, и что это вообще невозможно. Очень хотели, чтобы я "купил" виртуальный сервер.
А недавно я в нужную директорию в .htaccess вставил строку php_value max_input_vars 2000 и пофиг мне стал провайдер. . А об этом они умолчали, чтобы я не пробовал, а я поверил и реально не пробовал.
Куда писать SET LOCAL time_zone='+hh:mm' ?
Все же иногда да проскользнет в MySql NOW().
|
|
09.09.2015, 18:38
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Эдди
|
Куда писать SET LOCAL time_zone='+hh:mm' ?
|
Запрос делать.
|
|
|
|