В общем есть скрипт PHP: //Скрипт обратного отсчета времени CountDown var eventstr = "C новым годом!!!"; //Эта строка выводиться по окончанию отсчета var countdownid = document.getElementById("countdown"); //ID элемента в который выводится время var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"); function CountDowndmn(yr,m,d){ cdyear=yr; cdmonth=m; cdday=d; var today=new Date(); var todayy=today.getYear(); if (todayy < 1000) todayy+=1900; var todaym=today.getMonth(); var todayd=today.getDate(); var todayh=today.getHours(); var todaymin=today.getMinutes(); var todaysec=today.getSeconds(); var todaystring=montharray[todaym]+" "+todayd+", "+todayy+" "+todayh+":"+todaymin+":"+todaysec; futurestring=montharray[m-1]+" "+d+", "+yr dd=Date.parse(futurestring)-Date.parse(todaystring); dday=Math.floor(dd/(60*60*1000*24)*1); dhour=Math.floor((dd%(60*60*1000*24))/(60*60*1000)*1); dmin=Math.floor(((dd%(60*60*1000*24))%(60*60*1000))/(60*1000)*1); dsec=Math.floor((((dd%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1); if(dday<=0&&dhour<=0&&dmin<=0&&dsec<=1){ countdownid.innerHTML=eventstr; return } else { var lastchar = ""+dsec; lastchar = lastchar.substring(lastchar.length-1,lastchar.length); var dsecstr = "секунд"; if (lastchar=="1") { dsecstr = "секунда"; } if ((lastchar=="2")||(lastchar=="3")||(lastchar=="4")) { dsecstr = "секунды"; } lastchar = ""+dmin; lastchar = lastchar.substring(lastchar.length-1,lastchar.length); var dminstr = "минут"; if (lastchar=="1") { dminstr = "минута"; } if ((lastchar=="2")||(lastchar=="3")||(lastchar=="4")) { dminstr = "минуты"; } lastchar = ""+dhour; lastchar = lastchar.substring(lastchar.length-1,lastchar.length); var dhourstr = "часов"; if (lastchar=="1") { dhourstr = "час"; } if ((lastchar=="2")||(lastchar=="3")||(lastchar=="4")) { dhourstr = "часа"; } lastchar = ""+dday; lastchar = lastchar.substring(lastchar.length-1,lastchar.length); var ddaystr = "дней"; if (lastchar=="1") { ddaystr = "день"; } if ((lastchar=="2")||(lastchar=="3")||(lastchar=="4")) { ddaystr = "дня"; } countdownid.innerHTML="ДО НОВОГО ГОДА осталось: <br> "+dday+ " " +ddaystr+", "+dhour+" "+dhourstr+", "+dmin+" "+dminstr+" и "+dsec+" "+dsecstr; } setTimeout("CountDowndmn(cdyear,cdmonth,cdday)",1000); } CountDowndmn(2012,1,1); //Дата отсчета как сделать так, что бы время синхронизировалось не с ПК пользователя, а например с временем отдельного сайта?... поможет кто?) //Gifts: Поправил подсветку
GreenpeopleE, джава скрипты выполняются на стороне пользователя, соответственно var today=new Date(); выдаст время пользователя... Чтобы время было синхронизировано с каким-то сервером, его нужно предварительно вытащить с этого сервера... первое, что приходит на ум: 1) написать скрипт получения времени с сервера. 2) написать фкнкцию в джава скрипте, которая будет обращаться к скрипту и получать соответственно время сервера в чистом виде (наверно можно обойтись и без пхп скрипта, но мне кажется геморней) 3) в переменную today засунуть результат работы скрипта из пункта 2)
Вот если что для примера пхп скрипт time.php: PHP: <?php function request($url = '', $post = '', $ref = '') { $u = parse_url($url); $path = $u[path].'?'.$u[query]; global $COOKIE; if ($COOKIE) { foreach ($COOKIE as $n => $v) $COOK .= $n.'='.$v.';'; } $ip = gethostbyname($u[host]); $fp = fsockopen($ip,80,$en,$es,15); if(!$fp){exit('Connection failed. Error #'.$en.': '.$es);} if (!empty($post)) {$req = "POST $path HTTP/1.1\r\n";} else {$req = "GET $path HTTP/1.0\r\n";} $req .= "Host: $u[host]\r\n"; $req .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.4) Gecko/20091016 Firefox/3.5.4\r\n"; if (!empty($ref)) {$req .= "Referer: $ref\r\n";} $req .= "Content-type: application/x-www-form-urlencoded\r\n"; if (!empty($post)) {$req .= "Content-length: ". strlen($post) ."\r\n";} $req .= "Cookie:".substr($COOK, 0, strlen($COOK)-1)."\r\n"; $req .= "Connection: close\r\n\r\n"; if (!empty($post)) {$req .= $post;} fwrite($fp,$req); while(!feof($fp)) { $s .= fgets($fp,256); } fclose($fp); preg_match_all("/(?<=Set-Cookie: )(.*?)(?=\;)/", $s , $cook); foreach ($cook[0] as $str) { list ($name, $val) = explode('=', $str); $COOKIE[$name]=$val; } return $s; } $ex = request('http://mail.ru'); preg_match("/Date: (.+?)\r\n/", $ex, $t); $t = trim($t[0]); echo $t; ?> Скрипт выведет время сервера mail.ru Далее функция джава скрипта: Code: function _get(url) { if(!url) return 0; var xmlhttp; try { if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); } else if (window.ActiveXObject) { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET",url,false); xmlhttp.send(null); if (xmlhttp.readyState==4) { return xmlhttp.responseText; } } catch(er){} return null; } В своём джава скрипте делаешь var today=_get('time.php'); вместо var today=new Date(); По сути должно работать, а пхп скрипт надо причесать, просто запостил то, что было под рукой, он для других нужд...
Хех... жжоте ребята) если тебе надо с временем своего хостинга соединить то: 1) Суём данный код не в JS а в PHP файл 2) Меняем на это: PHP: var today=new Date(); today.setTime(<?= time();?>*1000); вуаля...) пхп на прямую впишет в JS время сервера с которого и послужит дефолтным в жс...) // Gifts: here, I fixed it