Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   вывод времени php + javascript (https://javascript.ru/forum/project/22686-vyvod-vremeni-php-javascript.html)

TTongorovortoto 28.10.2011 19:45

вывод времени php + javascript
 
Здравствуйте!
Для сайта нужно установить часы разных часовых поясов.
Делаю на php + javascript но не получается. Опишу задачу.
Время необходимо брать из php-функции date. Причем обращение к этой функции должно быть единожды.
Вывод часов должен производиться в блоке div с уникальным id для каждой часовой зоны.
Время должно обновляться каждую секунду для каждого блока div.
Вот что есть:
функция php mytime() :
<?
function mytime($offset=0,$hr=0,$min=0,$sec=0) {
$time_server=date("H:i:s");
$time_arr=explode(":",$time_server);
$time_arr[0]+=$offset;
if ($hr) return $time_arr[0];
elseif ($min) return $time_arr[1];
elseif ($sec) return $time_arr[2];
else return $time_arr[0].":".$time_arr[1].":".$time_arr[2];
}
?>


Код страницы:

<script type="text/javascript">
function showTime()
{
  var stroke = '<? echo mytime(); ?>';
  document
    .getElementById('time_div')
      .innerHTML=stroke;
  setTimeout(showTime,1000); // перерисовать 1 раз в сек.
}
</script>
<h1>time java</h1>
<div id="time_div"></div>
<script type="text/javascript">
  showTime();
</script>


Не обновляется контент, часы не идут.
Просьба за символическую плату дописать этот скрипт.
И реализовать следующее:
1. Сделать несколько строк времени для каждой временной зоны: 0, +1, +3, +9, -5
2. Сделать блоки для вывода времени time_div, time_div1, time_div3...
3. Сделать обновление контента во всех блоках.
4. Обращение к mytime() должно быть 1 раз.

Готов оплатить 300рублей за скрипт.

dmitriymar 28.10.2011 20:46

Цитата:

Сообщение от TTongorovortoto
Не обновляется контент, часы не идут.

и не должны.
при локальном обновлении не всё так просто будет. необходимо будет ещё определять разницу между серверным временем и локальным-чтобы определить в каком поясе пользователь.да и время нужно опрашивать локально-
Цитата:

Сообщение от TTongorovortoto
var stroke = '<? echo mytime(); ?>';

при запуске функции showTime() это время ну никак ни даст,не серверное ,не локальное...

TTongorovortoto 29.10.2011 00:11

Значит переменные должны быть глобальными.
Внутри функции showTime() сделал только вывод времени и обновление секунд, минут, часов.
В глобальные переменные вынес часы, минуты, секунды.
Внутри рекурсивно вызываемой функции showTime() эти глобальные переменные меняются и печатаются в блоки.
В итоге так стало:
<br>
<script type="text/javascript">
var stroke = '<? echo mytime(3); ?>';
var timearr = stroke.split(/[:]/);
var hour = parseInt(timearr[0]);
document.write(hour);
var minute = parseInt(timearr[1]);
var second = parseInt(timearr[2]);
var hour1 = hour+1;
if (hour1>23) {hour1=0;}
document.write("hour1: ",hour1);
var hour3 = hour+3;
if (hour3>23) {hour3=hour3-24;}
var hour9 = hour+9;
if (hour9>23) {hour9=hour9-24;}
document.write("hour9: ",hour9);
var hourm5 = hour-5;
if (hourm5<0) {hourm5=24+hourm5;}
document.write("hourm5: ",hourm5);
function showTime()
{
  document
    .getElementById('clock')
      .innerHTML=stroke;
  document
    .getElementById('clock1')
      .innerHTML=hour1+":"+minute+":"+second;
  document
    .getElementById('clock3')
      .innerHTML=hour3+":"+minute+":"+second;
  document
    .getElementById('clock9')
      .innerHTML=hour9+":"+minute+":"+second;
  document
    .getElementById('clock-5')
      .innerHTML=hourm5+":"+minute+":"+second;
  
  second=second+1;
  if (second>59) {second=0;minute=minute+1;}
  if (minute>59) 
  {
    minute=0;
    hour=hour+1; 
	hour1 = hour+1;
    hour3 = hour+3;
    hour9 = hrsarr;
    hourm5 = hour-5;
  }
  if (hour>23) {hour=0;}
  
  setTimeout(showTime,1000); // перерисовать 1 раз в сек.
}
</script>


	  
<div id="spacerdiv">&nbsp;</div>
<div id="citytime">
  <div id="city">Лондон</div>
  <div id="clock" class="timedisp"></div>
</div>

<div id="spacerdiv">&nbsp;</div>
<div id="citytime">
  <div id="city">Франкфурт</div>
  <div id="clock1" class="timedisp"></div>
</div>

<div id="spacerdiv">&nbsp;</div>
<div id="citytime">
  <div id="city">Москва</div>
  <div id="clock3" class="timedisp"></div>
</div>

<div id="spacerdiv">&nbsp;</div>
<div id="citytime">
  <div id="city">Токио</div>
  <div id="clock9" class="timedisp"></div>
</div>

<div id="spacerdiv">&nbsp;</div>
<div id="citytime">
  <div id="city">Нью-Йорк</div>
  <div id="clock-5" class="timedisp"></div>
</div>


<script type="text/javascript"> showTime();</script>


Часовой пояс GMT +3, время: 05:14.