Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помощь в "оживлении" серверного времени 
:(
    Опции темы
jone31
  Дата 19.4.2009, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 343
Регистрация: 29.11.2008

Репутация: нет
Всего: нет



Вообщем нужно с помощью JS заставить время "идти"! Я скока не пробывал ничего не выходит.

Вот что я писал:
Код

<?php // PHP скрипт выводящий время сервера. 
print "<b>Время сервера 1:</b> ";
function zonetime($zone) 
{ 
  $date=time(); 
  $date+=$zone*3600;
  return gmdate("H:i:s",$date); // H - часы, i - минуты, s - секунды.
}
echo zonetime(+4);
print "<br>";
?>
-------------------------------
<!-- Попытка сделать динамические часики взяв за основу JS скрипт часов, но с временем сервера, а не пользователя. -->
<div id=clock></div>
<script type="text/javascript">
function tick() {
var hours, minutes, seconds, ap;
var intHours, intMinutes, intSeconds;
intHours   = <?=gmdate("H")+4?>;
intMinutes = <?=gmdate("i")?>;
intSeconds = <?=gmdate("s")?>;

if (intHours == 0) {
    hours = "0:";
    ap = "";
} else if (intHours < 12) { 
    hours = intHours+":";
    ap = "";
} else if (intHours == 12) {
    hours = "12:";
    ap = "";
} else {
    intHours = intHours 
    hours = intHours + ":";
    ap = "";
}

if (intMinutes < 10) {
    minutes = "0"+intMinutes+":";
} else {
    minutes = intMinutes+":";
}

if (intSeconds < 10) {
    seconds = "0"+intSeconds+" ";
} else {
    seconds = intSeconds+" ";
} 

timeString = hours+minutes+seconds+ap;
clock.innerHTML = "<b>Время сервера 2:</b> "+timeString;

window.setTimeout("tick();", 100);
}
window.onload = tick;
</script>


Оба эти скрипта работают. Но вот последний почему то не хочет идти, хотя если брать время пользователя то норм. работает!
PM MAIL   Вверх
underW
Дата 19.4.2009, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 22.9.2008

Репутация: нет
Всего: 3



у тебя  var intHours, intMinutes, intSeconds - они не меняються, php их сгенерировал, выдал на страницу и все, с ними больше ничего не происходит.

тебе надо AJAX подключать...

может надо не setTimeout, а setInterval, a?

Это сообщение отредактировал(а) underW - 19.4.2009, 18:52
PM MAIL   Вверх
enof
Дата 19.4.2009, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: нет
Всего: 35



Вот выдра из кода:
Код

function show_time($id = "now_time")
{
    function get_month_array()
    {
        return array(_ST_JAN_P, _ST_FEB_P, _ST_MAR_P, _ST_APR_P, _ST_MAY_P, _ST_JUN_P, _ST_JUL_P, _ST_AUG_P, _ST_SEP_P, _ST_OCT_P, _ST_NOV_P, _ST_DEC_P);
    }
    function get_days()
    {
        return array(_ST_SUNDAY, _ST_MONDAY, _ST_TUESDAY, _ST_WEDNESDAY, _ST_THURSDAY, _ST_FRIDAY, _ST_SATURDAY);
    }
    $m = preg_replace("#0(\d)#", "$1", date("i"));
    $s = preg_replace("#0(\d)#", "$1", date("s"));
    $h = date("G");
    $d = date("j");
    $n = date("n") - 1;
    $y = date("Y");
    $w = date("w");
    $days = get_days();
    $months = get_month_array();
    $year_s = _ST_YEAR_P;
    $time = strlen($h) < 2 ? "0$h:" : "$h:" . date("i") . ":" . date("s") . ", {$days[$w]}, " . "$d ". $months[$n] . " $y $year_s";
    $now_s = _ST_NOW;

    $calendar = "
    <script>
    var seconds = $s;
    var minutes = $m;
    var hours = $h;
    var day = $d;
    var year = $y;
    var month = $n;
    var months = new Array();";
    foreach($months as $k=>$v)
        $calendar .= "months[$k] = '$v';";
    $calendar .= "var days = new Array();";
    foreach($days as $k=>$v)
        $calendar .= "days[$k] = '$v';";
    $calendar .= <<<E
    function refresh_time()
    {
        var now = new Date(year, month, day, hours, minutes, seconds);
        now.setSeconds(now.getSeconds() + 1);
        seconds = now.getSeconds();
        minutes = now.getMinutes();
        hours = now.getHours();
        day = now.getDate();
        numDay = now.getDay();;
        year = 1900 + now.getYear();
        month = now.getMonth();
        var resultTime = hours.toString().length == 1 ? "0" + hours + ":" : hours + ":";
        resultTime += minutes.toString().length == 1 ? "0" + minutes + ":" : minutes + ":";
        resultTime += seconds.toString().length == 1 ? "0" + seconds : seconds;
        resultTime += ", " + days[numDay] + ", " + day + " " + months[month] + " " + year + " $year_s";
        document.getElementById("$id").innerHTML = resultTime;
    }
    setInterval("refresh_time()", 1000);
    </script>
    $now_s<span id="$id" onLoad="setInterval('refresh_time()', 1000);">$time</span>
E;
    return $calendar;
}
echo show_time();

Думаю суть понятна.

Это сообщение отредактировал(а) enof - 19.4.2009, 19:01
PM MAIL ICQ Skype   Вверх
jone31
  Дата 19.4.2009, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 343
Регистрация: 29.11.2008

Репутация: нет
Всего: нет



underW, если ты имеешь в виду вот так:
Код

............
window.setInterval(tick(), 1000);
............

я уже пробовал она не работала.
PM MAIL   Вверх
enof
Дата 19.4.2009, 19:08 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: нет
Всего: 35



Подпричесал маленько, может кому пригодися:
Код

<?php

function show_server_time($id = "now_time")
{
    function get_month_array()
    {
        return array("января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "сентября", "октября", "ноября", "декабря");
    }
    function get_days()
    {
        return array("Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота");
    }
    $m = preg_replace("#0(\d)#", "$1", date("i"));
    $s = preg_replace("#0(\d)#", "$1", date("s"));
    $h = date("G");
    $d = date("j");
    $n = date("n") - 1;
    $y = date("Y");
    $w = date("w");
    $days = get_days();
    $months = get_month_array();
    $time = strlen($h) < 2 ? "0$h:" : "$h:" . date("i") . ":" . date("s") . ", {$days[$w]}, " . "$d ". $months[$n] . " $y года";

    $calendar = "
    <script>
    var seconds = $s;
    var minutes = $m;
    var hours = $h;
    var day = $d;
    var year = $y;
    var month = $n;
    var months = new Array();";
    foreach($months as $k=>$v)
        $calendar .= "months[$k] = '$v';";
    $calendar .= "var days = new Array();";
    foreach($days as $k=>$v)
        $calendar .= "days[$k] = '$v';";
    $calendar .= <<<E
    function refresh_time()
    {
        var now = new Date(year, month, day, hours, minutes, seconds);
        now.setSeconds(now.getSeconds() + 1);
        seconds = now.getSeconds();
        minutes = now.getMinutes();
        hours = now.getHours();
        day = now.getDate();
        numDay = now.getDay();;
        year = 1900 + now.getYear();
        month = now.getMonth();
        var resultTime = hours.toString().length == 1 ? "0" + hours + ":" : hours + ":";
        resultTime += minutes.toString().length == 1 ? "0" + minutes + ":" : minutes + ":";
        resultTime += seconds.toString().length == 1 ? "0" + seconds : seconds;
        resultTime += ", " + days[numDay] + ", " + day + " " + months[month] + " " + year + " года";
        document.getElementById("$id").innerHTML = resultTime;
    }
    setInterval("refresh_time()", 1000);
    </script>
    Сейчас <span id="$id" onLoad="setInterval('refresh_time()', 1000);">$time</span>
E;
    return $calendar;
}
echo show_server_time();

PM MAIL ICQ Skype   Вверх
jone31
  Дата 19.4.2009, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 343
Регистрация: 29.11.2008

Репутация: нет
Всего: нет



Спасибо, enof. Твой скрипт был как раз к стати. Как раз то что я так долго искал. Если не секрет где ты его взял?

Если кому нужно, забираем готовый:
Код

<?php
function servertime()
{
    $h = date("H"); //часы
    $i = date("i"); //минуты
    $s = date("s"); // секунды
    $time =   $h . ":". $i . ":" . $s;
    $times = "<script>
    var hours   = $h; 
    var minutes = $i;
    var seconds = $s; ";
    $times .= <<<E
    function reload()
    {
        var cur = new Date();
        cur.setSeconds(cur.getSeconds() + 1);
        seconds = cur.getSeconds();
        minutes = cur.getMinutes();
        hours = cur.getHours();
        var outTime = hours.toString().length == 1 ? "0" + hours + ":" : hours + ":";
        outTime += minutes.toString().length == 1 ? "0" + minutes + ":" : minutes + ":";
        outTime += seconds.toString().length == 1 ? "0" + seconds : seconds;
        document.getElementById("ST").innerHTML = outTime;
    }
    setInterval("reload()", 1000);
    </script>
    <span id="ST" onLoad="setInterval('reload()', 1000);">$time</span>
E;
    return $times;
}
echo servertime(); 
?>

PM MAIL   Вверх
enof
Дата 20.4.2009, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: нет
Всего: 35



Цитата(jone31 @  19.4.2009,  23:35 Найти цитируемый пост)
Если не секрет где ты его взял?

Написал. А что?
PM MAIL ICQ Skype   Вверх
jone31
  Дата 20.4.2009, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 343
Регистрация: 29.11.2008

Репутация: нет
Всего: нет



Цитата(enof @  20.4.2009,  00:55 Найти цитируемый пост)
Написал. А что?

ты же писал что выдрал это откуда то! 


PM MAIL   Вверх
enof
Дата 20.4.2009, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: нет
Всего: 35



Цитата(jone31 @  20.4.2009,  13:22 Найти цитируемый пост)
ты же писал что выдрал это откуда то! 

Из компонента для джумлы, который когда-то писал. Это так важно?
Сказал я это, чтобы не было вопросов по поводу некоторой кривости кода.

Это сообщение отредактировал(а) enof - 20.4.2009, 12:29
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0623 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.