Ceas cu data si ora de pe server

Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
cadou
Mesaje: 328

Ceas cu data si ora de pe server

Am acest script de data si ora pe site, dar aceasta preia data si ora din calculatorul meu nu de pe un server local asa cum se face in php cu aceea functie.
Cum as putea sa fac acest lucru in javascript ?
Tot ce vreau este sa nu se mai preia data si ora din calculatorul userului.

Cod: Selectaţi tot

var dayarray=new Array("Duminica","Luni","Marti","Miercuri","Joi","Vineri","Sambata")
var montharray=new Array("Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie")

function getthedate(){
var mydate=new Date()
var year=mydate.getYear()
if (year < 1000)
year+=1900
var day=mydate.getDay()
var month=mydate.getMonth()
var daym=mydate.getDate()
if (daym<10)
daym="0"+daym
var hours=mydate.getHours()
var minutes=mydate.getMinutes()
var seconds=mydate.getSeconds()
if (minutes<=9)
minutes="0"+minutes
if (seconds<=9)
seconds="0"+seconds
//change font size here
var cdate="<small><font color='red' face='Arial'><b>"+dayarray[day]+", "+daym+" "+montharray[month]+" "+year+" ; "+hours+":"+minutes+":"+seconds
+"</b></font></small>"
if (document.all)
document.all.clock.innerHTML=cdate
else if (document.getElementById)
document.getElementById("clock").innerHTML=cdate
else
document.write(cdate)
}
if (!document.all&&!document.getElementById)
getthedate()
function goforit(){
if (document.all||document.getElementById)
setInterval("getthedate()",1000)
}

MarPlo
Salut
javascript nu stie de ora locala de pe server. Este client side, deci stie timpul setat pe calculator.
Ca sa faci un ceas cu ora de pe server in javascript, e necesar sa incluzi in codul JS ora /timpul de pe server (de ex. cu cod php).
Acest script functioneaza cu ora de pe server; si poate fi folosit doar in pagina php fiindca adauga cu: <?php echo time(); ?> timpul de pe server.

Cod: Selectaţi tot

<div id="clock" style="color:#f00;font-weight:700;text-align:center;width:170px;"></div>
<script>
var dayarray =['Duminica','Luni','Marti','Miercuri','Joi','Vineri','Sambata'];
var montharray =['Ianuarie','Februarie','Martie','Aprilie','Mai','Iunie','Iulie','August','Septembrie','Octombrie','Noiembrie','Decembrie'];
var ofs_time = new Date().getTime()-<?php echo time(); ?>000;
function getthedate(){
  var now = new Date();
  now.setTime(now.getTime()-ofs_time);
  var year=now.getYear();
  if(year < 1000) year+=1900;
  var day=now.getDay();
  var month=now.getMonth();
  var daym=now.getDate();
  if(daym<10) daym='0'+daym;
  var hours=now.getHours();
  var minutes=now.getMinutes();
  var seconds=now.getSeconds();
  if(minutes<=9) minutes='0'+minutes;
  if(seconds<=9) seconds='0'+seconds
  var cdate= dayarray[day]+ ', '+ daym+ ' '+ montharray[month]+ ' '+ year+'<br>'+ hours+':'+ minutes+':'+ seconds;
  document.getElementById('clock').innerHTML=cdate;
}
getthedate();
setInterval(getthedate,1000);
</script>

cadou
salut. uite am incercat sa fac eu ceva, dar ceea ce nu am idee cum sa fac este sa imi afiseze la secunda, adica mie imi ramane data si ora fixa cat timp stau pe aceea pagina, doar daca dau refresh la pagina se schimba ora/minutul/secunda ....

Cod: Selectaţi tot

<script type="text/javascript" src="/jquery.js"></script>
<?php
// preluare data si ora
setlocale(LC_TIME, array('ro.utf-8', 'ro_RO.UTF-8', 'ro_RO.utf-8', 'ro', 'ro_RO', 'ro_RO.ISO8859-2'));
date_default_timezone_set('Europe/Bucharest');
$dataora = strftime('%d %B %Y ora %H:%M:%S');
?>

<script type="text/javascript"><!--
function getthedate(){
var cdate = "<?php echo $dataora; ?>";
if (document.all)
document.all.clock.innerHTML=cdate
else if (document.getElementById)
document.getElementById("clock").innerHTML=cdate
else
document.write(cdate)
}
if (!document.all&&!document.getElementById)
getthedate()
function goforit(){
if (document.all||document.getElementById)
setInterval("getthedate()",1000)
}
//--></script>
<body onLoad="goforit()">
	<span id="clock">test</span>
</body>

MarPlo
Ce ai facut nu poate functiona cum vrei fiindca codul php din functia javascript se executa o singura data pe server, la incarcarea paginii, nu si la urmatoarele executii ale functiei in javascript.
Mai bine folosesti scriptul dat la raspunsul anterior, functioneaza; si doar mai adaugi in php: date_default_timezone_set(). Sau daca vrei sa faci altul, treaba ta.

cadou
Ms, problema rezolvata ! :) :) :) :)

Subiecte similare