Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: интересный вопрос про часы
 
 автор: spiner   (07.07.2005 в 02:55)   письмо автору
 
 

Здравствуйте. Как вы думаете как сделать часы реального времени на строне клиента? Т.е. обычные javascript часы показывают время, которое стоит у клиента.. на php - date показывает время сервера. А КАК сделать часы формата HH:mm:ss (обращаю внимание, что есть и секунды) на странице, которые бы показывали время сервера??? В моем случае сервер стоит в Москве, и чтобы люди, пришедшие из Барнаула, увидели московское время...Причем чтобы эти часы ходили.. А не обновлялись через F5.. Спасибо..

   
 
 автор: isset   (07.07.2005 в 04:10)   письмо автору
 
   для: spiner   (07.07.2005 в 02:55)
 

Легко , при загрузке в javascript-переменную заносится текущее время, а потом прибавляем к нему секунды..

   
 
 автор: cernos   (07.07.2005 в 08:21)   письмо автору
 
   для: spiner   (07.07.2005 в 02:55)
 

Да! Isset прав, но есть одно но.
Скрипт запускается при полной загрузке.
Т.е. Сервер обработал скрипт и выдает его в броузер чела.
Если у чела (посетителя) инет не быстрый, то возможно что время которое сервер выдаст и время в которое скрипт начнет функциклировать будут разным.
Максимум погрешность будет на 1мин. Всё зависит от скорости инета...

   
 
 автор: spiner   (07.07.2005 в 08:55)   письмо автору
 
   для: cernos   (07.07.2005 в 08:21)
 

А как секунды прибавить? Не могли бы вы привести пример кода? Очень нужно.. Спасибо.

   
 
 автор: cernos   (07.07.2005 в 12:08)   письмо автору
 
   для: spiner   (07.07.2005 в 08:55)
 

В JavaScripte есть такое как SetInterval();
Вызов функции через какойто промежуток времени
SetInterval(Функция, 1000); 1000 - это 1 секунда
Вроде так!
Поищите работу этой функции в поиске на данном форуме.

   
 
 автор: spiner   (07.07.2005 в 12:51)   письмо автору
 
   для: cernos   (07.07.2005 в 12:08)
 

Вот нашел скрипт, и кое как его подправил.. Просто мои познания в JS приравниваются к уровню моря.. Посмотрите пожалуйста скрипт и он ругается на 29 строчку, и как вывести эту дату?

<script language="javascript">
<!--
  var SrvDate = new Date();
  
  SrvDate.setFullYear(<? getdate("year");  ?>);
  SrvDate.setMonth(<? getdate("month"?>);
  SrvDate.setDate(<? getdate("wday"?>);  
  SrvDate.setHours(<? getdate("hours"?>);
  SrvDate.setMinutes(<? getdate("minutes"?>);
  SrvDate.setSeconds(<? getdate("seconds"?>);
  
  var i = SrvDate.getSeconds();

  function timeGo() 
  {
    SrvDate.setSeconds(i);
  
    if (i >= 60) i = 1; 
    else i++;    
        
    second = SrvDate.getSeconds();
    hour = SrvDate.getHours();
    minute = SrvDate.getMinutes();
    day = SrvDate.getDate();
    month = SrvDate.getMonth();
    year = SrvDate.getFullYear();
    
    if (second < = 9) second = "0" + second;
    if (minute < = 9) minute = "0" + minute;
    if (hour < = 9) hour = "0" + hour;    
    if (day < = 9) day = "0" + day;
    if (month < = 9) month = "0" + month;        
    
    setTimeout("timeGo()", 1000);
    
    this.document.all.spanSrvDate.innerHTML = day + "." + month + "." + year + " " 
      + hour + ":" + minute + ":" + second;
  }

  timeGo();
// -->
</script>

100% я намудрил с переменными из PHP в JS...

   
 
 автор: spiner   (11.07.2005 в 20:46)   письмо автору
 
   для: spiner   (07.07.2005 в 12:51)
 

пожалуйста, посмотрите, знатоки javascript..

   
 
 автор: cheops   (12.07.2005 в 00:54)   письмо автору
 
   для: spiner   (07.07.2005 в 12:51)
 

Та ошибка, которую он выдавал была связана с оператором <=, который записан как < =
<script language="javascript"> 
<!-- 
  var SrvDate = new Date(); 
   
  SrvDate.setFullYear(<? getdate("year");  ?>); 
  SrvDate.setMonth(<? getdate("month"?>); 
  SrvDate.setDate(<? getdate("wday"?>);   
  SrvDate.setHours(<? getdate("hours"?>); 
  SrvDate.setMinutes(<? getdate("minutes"?>); 
  SrvDate.setSeconds(<? getdate("seconds"?>); 
   
  var i = SrvDate.getSeconds(); 

  function timeGo() 
  { 
    SrvDate.setSeconds(i); 
   
    if (i >= 60) i = 1; 
    else i++;     
         
    second = SrvDate.getSeconds(); 
    hour = SrvDate.getHours(); 
    minute = SrvDate.getMinutes(); 
    day = SrvDate.getDate(); 
    month = SrvDate.getMonth(); 
    year = SrvDate.getFullYear(); 
     
    if (second <= 9) second = "0" + second; 
    if (minute <= 9) minute = "0" + minute; 
    if (hour <= 9) hour = "0" + hour;     
    if (day <= 9) day = "0" + day; 
    if (month <= 9) month = "0" + month;         
     
    setTimeout("timeGo()", 1000); 
     
    this.document.all.spanSrvDate.innerHTML = day + "." + month + "." + year + " " 
      + hour + ":" + minute + ":" + second; 
  } 

  timeGo(); 
// --> 
</script>

Но у меня всё-равно сбоит, я так понимаю уже из-за getdate(), которого он не может найти...

   
 
 автор: Duran   (12.07.2005 в 08:37)   письмо автору
 
   для: cheops   (12.07.2005 в 00:54)
 

Есть такая мысль. А что, если сперва грузить пустую страничку, считывающую системное время юзверя, передавать его на сервер, тот высчитывает разницу и передает ее как поправку к стандартному скрипту времени :-).

   
 
 автор: MVH   (26.08.2005 в 22:48)
 
   для: cheops   (12.07.2005 в 00:54)
 

Проблема не в JS, а в php. Ф-я getdate() вообщето массив возвращает, и в параметрах у неё можно только время в timestamp указать. Используйте в php для этой цели date() вместо getdate().
Описание тут:
http://ru.php.net/manual/en/function.date.php

   
 
 автор: MVH   (26.08.2005 в 23:06)
 
   для: MVH   (26.08.2005 в 22:48)
 

Т.е. в итоге будет так:

SrvDate.setFullYear(<?=date('Y');?>);
SrvDate.setMonth(<?=date('n')?>);
SrvDate.setDate(<?=date('j')?>);
SrvDate.setHours(<?=date('H')?>);
SrvDate.setMinutes(<?=date('i')?>);
SrvDate.setSeconds(<?=date('s')?>);

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования