Серверное время (PHP + JS)

Если вы хотите получить что-то готовое и бесплатно, то пишите в этом разделе.

Серверное время (PHP + JS)

Сообщение wierusna » 30 окт 2012, 21:08

Есть скрипт отсчета времени до заданной временной точки. (За основу берет время с var time=new Date("<? echo date(M);?>,<? echo date(j);?>,<? echo date(Y);?>,<? echo date(G);?>:<? echo date(i);?>:<? echo date(s);?>"); )

Вот листинг
  1.  
  2.  
  3. <script language='javascript' type='text/javascript'>
  4. function fulltime ()   {
  5. var time=new Date("<? echo date(M);?>,<? echo date(j);?>,<? echo date(Y);?>,<? echo date(G);?>:<? echo date(i);?>:<? echo date(s);?>");
  6. var newYear=new Date("Oct,30,2013,18:58:00");  
  7. var totalRemains=(newYear.getTime()-time.getTime());
  8.  
  9. if (totalRemains>1){
  10.  
  11. var RemainsSec = (parseInt(totalRemains/1000));
  12. var RemainsFullDays=(parseInt(RemainsSec/(24*60*60)));
  13. var secInLastDay=RemainsSec-RemainsFullDays*24*3600;
  14. var RemainsFullHours=(parseInt(secInLastDay/3600));
  15. if (RemainsFullHours<10){RemainsFullHours="0"+RemainsFullHours};
  16. var secInLastHour=secInLastDay-RemainsFullHours*3600;
  17. var RemainsMinutes=(parseInt(secInLastHour/60));
  18. if (RemainsMinutes<10){RemainsMinutes="0"+RemainsMinutes};
  19. var lastSec=secInLastHour-RemainsMinutes*60;
  20. if (lastSec<10){lastSec="0"+lastSec};
  21.  
  22. document.getElementById("RemainsFullDays").innerHTML=RemainsFullDays+"<span id='Rem'> days</span>";
  23. document.getElementById("RemainsFullHours").innerHTML=RemainsFullHours+"<span id='Rem'> hours</span>";
  24. document.getElementById("RemainsMinutes").innerHTML=RemainsMinutes+"<span id='Rem'> min</span>";
  25. document.getElementById("lastSec").innerHTML=lastSec+"<span id='Rem'> sec</span>";  
  26. setTimeout('fulltime()',10)    
  27. }
  28.  
  29. else{
  30. document.getElementById("clock").innerHTML="C НОВЫМ ГОДОМ !!!";
  31. }
  32. }
  33. </script>
  34.  
  35.  
  36.  
  37.  
  38. <div id='clou_xs'>
  39. <div id='clock'>
  40. TIME:
  41.  
  42. <span id='RemainsFullDays'></span>
  43.     <span id='RemainsFullHours'></span>
  44.     <span id='RemainsMinutes'></span>
  45.     <span id='lastSec'></span>
  46. </div>
  47. </div>
  48. <script language='javascript'>fulltime();</script>
  49.  
  50.  



Время отображается один раз (когда пользователь открывает страницу) то есть отсчет не идет.
Но когда я делаю так (берет время с компьютера пользователя.....не серверное)



отсчет идет динамически (то есть секунды уменьшаются) - есть анимация.
Как исправить это в первом варианте при этом не нагружать сервер (например если одновременно будут сидеть 500 чел и обновлять страницу, сервер ляжет)?
wierusna

 
Автор темы
Сообщения: 137
Зарегистрирован: 13 ноя 2011, 18:40
Благодарил (а): 11 раз.
Поблагодарили: 1 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



Re: Серверное время (PHP + JS)

Сообщение Serge » 30 окт 2012, 22:35

  1. timer = function()
  2. {
  3.     var time_to = document.getElementById('timer');
  4.     time_to.innerHTML--;
  5.     if(time_to.innerHTML >= 0)
  6.     {
  7.         var dsec = time_to.innerHTML % 60;
  8.         var dmin = ((time_to.innerHTML - dsec) % 3600)/60;
  9.             var dhour = ((time_to.innerHTML - dsec - dmin*60)/3600) % 24;
  10.         var dday = (time_to.innerHTML - dsec - dmin*60 - dhour*3600)/86400;
  11.         if(dday % 10 === 1 && dday !== 11)
  12.             dday = dday + " день, ";
  13.         else if(dday % 10 === 2 && dday !== 12)
  14.             dday = dday + " дня, ";
  15.         else if(dday % 10 === 3 && dday !== 13)
  16.                 dday = dday + " дня, ";
  17.         else if(dday % 10 === 4 && dday !== 14)
  18.             dday = dday + " дня, ";
  19.         else
  20.             dday = dday + " дней, ";
  21.             if(dhour < 10)
  22.             dhour = "0" + dhour;
  23.         if(dmin < 10)
  24.             dmin = "0" + dmin;
  25.         if(dsec < 10)
  26.             dsec = "0" + dsec;
  27.         document.getElementById("time").innerHTML = dday + dhour + ":" + dmin + ":" + dsec; 
  28.     }
  29.     else
  30.     {
  31.         document.getElementById("text").innerHTML = "Отсчет закончен :)";
  32.         document.getElementById("time").innerHTML = "";
  33.     }
  34.     setTimeout(timer, 1000);
  35. }

А при входе в приложение в div с id time_to записываю разницу между текущим временем и до отсчета (strtotime("2013-12-31 20:00") - time())
http://sevenlines.com.ua - разработка и продвижение сайтов
Serge
WEB Team
WEB Team
 
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55
Благодарил (а): 2 раз.
Поблагодарили: 65 раз.

Re: Серверное время (PHP + JS)

Сообщение wierusna » 31 окт 2012, 17:50

Хмм...создал HTML файл и записал в него
  1.  
  2.  
  3.     <script language='javascript'>    
  4.    
  5.     timer = function()
  6.     {
  7.         var time_to = document.getElementById('timer');
  8.         time_to.innerHTML--;
  9.         if(time_to.innerHTML >= 0)
  10.         {
  11.             var dsec = time_to.innerHTML % 60;
  12.             var dmin = ((time_to.innerHTML - dsec) % 3600)/60;
  13.                 var dhour = ((time_to.innerHTML - dsec - dmin*60)/3600) % 24;
  14.             var dday = (time_to.innerHTML - dsec - dmin*60 - dhour*3600)/86400;
  15.             if(dday % 10 === 1 && dday !== 11)
  16.                 dday = dday + " день, ";
  17.             else if(dday % 10 === 2 && dday !== 12)
  18.                 dday = dday + " дня, ";
  19.             else if(dday % 10 === 3 && dday !== 13)
  20.                     dday = dday + " дня, ";
  21.             else if(dday % 10 === 4 && dday !== 14)
  22.                 dday = dday + " дня, ";
  23.             else
  24.                 dday = dday + " дней, ";
  25.                 if(dhour < 10)
  26.                 dhour = "0" + dhour;
  27.             if(dmin < 10)
  28.                 dmin = "0" + dmin;
  29.             if(dsec < 10)
  30.                 dsec = "0" + dsec;
  31.             document.getElementById("time").innerHTML = dday + dhour + ":" + dmin + ":" + dsec;
  32.         }
  33.         else
  34.         {
  35.             document.getElementById("text").innerHTML = "Отсчет закончен :)";
  36.             document.getElementById("time").innerHTML = "";
  37.         }
  38.         setTimeout(timer, 1000);
  39.     }
  40.     </script>
  41.    
  42.     <div id="time_to"></div>
  43.     <div id="time"></div>
  44.     <div id="text"></div>
  45.  
  46.  


Ничего не выходит....джаваскрипт я не знаю совсем( Помогите пжл записать целый код правильно. И можно сделать что бы отсчет был в днях/часа/минутах/секундах (года и месяца не нужны)
wierusna

 
Автор темы
Сообщения: 137
Зарегистрирован: 13 ноя 2011, 18:40
Благодарил (а): 11 раз.
Поблагодарили: 1 раз.

Re: Серверное время (PHP + JS)

Сообщение Serge » 31 окт 2012, 19:03

wierusna писал(а):Ничего не выходит....джаваскрипт я не знаю совсем( Помогите пжл записать целый код правильно. И можно сделать что бы отсчет был в днях/часа/минутах/секундах (года и месяца не нужны)

Ну надо бы поучить его, что ли.
Добавьте timer(); перед окончанием скрипта.
http://sevenlines.com.ua - разработка и продвижение сайтов
Serge
WEB Team
WEB Team
 
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55
Благодарил (а): 2 раз.
Поблагодарили: 65 раз.

Re: Серверное время (PHP + JS)

Сообщение wierusna » 31 окт 2012, 22:10

Так? Не работает...... ( Я не могу понять, где нужно установить время (до какого промежутка будет отсчет)
  1.  
  2.         else
  3.         {
  4.             document.getElementById("text").innerHTML = "Отсчет закончен :)";
  5.             document.getElementById("time").innerHTML = "";
  6.         }
  7.         setTimeout(timer, 1000);
  8.     }
  9.    
  10.      timer();
  11.      
  12.     </script>
  13.    
  14.  
  15.  
wierusna

 
Автор темы
Сообщения: 137
Зарегистрирован: 13 ноя 2011, 18:40
Благодарил (а): 11 раз.
Поблагодарили: 1 раз.

Re: Серверное время (PHP + JS)

Сообщение Serge » 31 окт 2012, 23:16

wierusna писал(а):...

  1. <head><script>атата ололо</script></head>
  2. <body>
  3. <div id="timer" style="display:none">100500</div><!--Время в секундах до финальной точки-->
  4. <div id="time"></div>
  5. <div id="text"></div>
  6. </body>
http://sevenlines.com.ua - разработка и продвижение сайтов
Serge
WEB Team
WEB Team
 
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55
Благодарил (а): 2 раз.
Поблагодарили: 65 раз.

Re: Серверное время (PHP + JS)

Сообщение wierusna » 31 окт 2012, 23:51

Блин хоть убей....не работает((((((( Вам сложно написать код? Или вы из принципа не пишите его)) что бы меня помучить?

  1.  
  2.  
  3.  <head><script>
  4.    
  5.        timer = function()
  6.     {
  7.         var time_to = document.getElementById('timer');
  8.         time_to.innerHTML--;
  9.         if(time_to.innerHTML >= 0)
  10.         {
  11.             var dsec = time_to.innerHTML % 60;
  12.             var dmin = ((time_to.innerHTML - dsec) % 3600)/60;
  13.                 var dhour = ((time_to.innerHTML - dsec - dmin*60)/3600) % 24;
  14.             var dday = (time_to.innerHTML - dsec - dmin*60 - dhour*3600)/86400;
  15.             if(dday % 10 === 1 && dday !== 11)
  16.                 dday = dday + " день, ";
  17.             else if(dday % 10 === 2 && dday !== 12)
  18.                 dday = dday + " дня, ";
  19.             else if(dday % 10 === 3 && dday !== 13)
  20.                     dday = dday + " дня, ";
  21.             else if(dday % 10 === 4 && dday !== 14)
  22.                 dday = dday + " дня, ";
  23.             else
  24.                 dday = dday + " дней, ";
  25.                 if(dhour < 10)
  26.                 dhour = "0" + dhour;
  27.             if(dmin < 10)
  28.                 dmin = "0" + dmin;
  29.             if(dsec < 10)
  30.                 dsec = "0" + dsec;
  31.             document.getElementById("time").innerHTML = dday + dhour + ":" + dmin + ":" + dsec;
  32.         }
  33.         else
  34.         {
  35.             document.getElementById("text").innerHTML = "Отсчет закончен :)";
  36.             document.getElementById("time").innerHTML = "";
  37.         }
  38.         setTimeout(timer, 1000);
  39.     }
  40.    
  41.      timer();
  42.     </script></head>
  43.     <body>
  44.     <div id="timer" style="display:none">100500</div><!--Время в секундах до финальной точки-->
  45.     <div id="time"></div>
  46.     <div id="text"></div>
  47.    
  48.     </body>
  49.  
wierusna

 
Автор темы
Сообщения: 137
Зарегистрирован: 13 ноя 2011, 18:40
Благодарил (а): 11 раз.
Поблагодарили: 1 раз.

Re: Серверное время (PHP + JS)

Сообщение Serge » 01 ноя 2012, 09:18

wierusna писал(а):Блин хоть убей....не работает((((((( Вам сложно написать код? Или вы из принципа не пишите его)) что бы меня помучить?

Ага.
вместо просто timer() и работает. Только что проверил. Но надо jQuery подключать.
Есть еще второй вариант - делать setTimeout(timer,1000), но это не есть правильно, он все равно может запуститься до загрузки страницы.
http://sevenlines.com.ua - разработка и продвижение сайтов
Serge
WEB Team
WEB Team
 
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55
Благодарил (а): 2 раз.
Поблагодарили: 65 раз.

Re: Серверное время (PHP + JS)

Сообщение wierusna » 01 ноя 2012, 15:23

Спасибо, заработало....
Только вот похоже вы не поняли сути) или я так плохо объясняю.
Задача такая:
Отображать сколько времени осталось до конца аукциона (например)
Время должно быть серверным а не клиентским т.к. у двух людей, живущих в разных часовых поясах время будет показано по разному.
Например:
Человек живущий в Китае и человек живущий в России зашли на страницу и видят, что до конца осталось 3 часа. Через час они вновь зашли на страницу и удивили, что что до конца осталось 2 часа. При этом разница в 2-5 сек допустима.
Такое возможно сделать?
wierusna

 
Автор темы
Сообщения: 137
Зарегистрирован: 13 ноя 2011, 18:40
Благодарил (а): 11 раз.
Поблагодарили: 1 раз.

Re: Серверное время (PHP + JS)

Сообщение Serge » 01 ноя 2012, 17:48

wierusna писал(а):Спасибо, заработало....
Только вот похоже вы не поняли сути) или я так плохо объясняю.
Задача такая:
Отображать сколько времени осталось до конца аукциона (например)
Время должно быть серверным а не клиентским т.к. у двух людей, живущих в разных часовых поясах время будет показано по разному.
Например:
Человек живущий в Китае и человек живущий в России зашли на страницу и видят, что до конца осталось 3 часа. Через час они вновь зашли на страницу и удивили, что что до конца осталось 2 часа. При этом разница в 2-5 сек допустима.
Такое возможно сделать?

Я Вам привел пример скрипта, подставив в который время в секундах до окончания - он будет считать до этого момента. Я это делаю банальным post запросом при входе пользователя, полученный результат записываю в $('#timer') (сервер выдает уже время в секундах, ему не сложно сделать strtotime(дата) - time()).
http://sevenlines.com.ua - разработка и продвижение сайтов
Serge
WEB Team
WEB Team
 
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55
Благодарил (а): 2 раз.
Поблагодарили: 65 раз.

След.

Вернуться в Просим готовое и бесплатно



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0