Ti mando l'html prodotto dalla pagina server.
L'istruzione:
var j = {anno:2007,mese:3,giorno:05,ora:09,minuto:54,secon do:24,millisecondo:0 };
nella pagina reale è:
var j = <%=json%>;
dove json è una variabile server stringa che restituisce appunto la data del server sotto forma di oggetto javascript
codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
Pagina senza titolo
</title><link href="../../stili/Styles.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="../../js/ajax.js"></script>
<script language="javascript" type="text/javascript">
// <!CDATA[
var blocco_setTimeout = null;//utilizzato per mostrare l'ora ogni 111 ms
var Timeout = 5000;
var delta = 0;
function window_onload()
{
var j = {anno:2007,mese:3,giorno:05,ora:09,minuto:54,secondo:24,millisecondo:0 };
//se non ci sono problemi con l'ora esatta, calcolo la differenza delta tra
//l'ora locale e quella esatta (millisecondi). Altrimenti uso il predefinito,
//delta = 0, che equivale ad usare l'ora del computer
if(j.anno != "-1")
{
var millisecondi = new Date(j.anno, j.mese, j.giorno, j.ora, j.minuto, j.secondo, j.millisecondo).getTime();
delta = millisecondi - new Date().getTime();
}
//mostra l'ora corretta ogni 111 ms
getOraLocaleCorretto();
//recupera l'ora esatta ogni Timeout
window.setTimeout("recupera_ora()", Timeout);
Timeout = Timeout * 2; if(Timeout > 60000) Timeout = 60000;
}
//ricavo l'ora esatta dall'ora computer aggiungendo il delta
//e lo mostro
function getOraLocaleCorretto()
{
var millisecondi = new Date().getTime() + delta;
var data = new Date(millisecondi);
var mesi = ["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"];
var anno = data.getFullYear();
var mese = data.getMonth();
var giorno = data.getDate();
var ora = data.getHours() + ""; if(ora.length < 2) ora = "0" + ora;
var minuto = data.getMinutes() + ""; if(minuto.length < 2) minuto = "0" + minuto;
var secondo = data.getSeconds() + ""; if(secondo.length < 2) secondo = "0" + secondo;
var orologio = giorno + " " + mesi[mese] + " " + anno + ", " + ora + ":" + minuto + ":" + secondo;
$("Label_ore_client").innerHTML = orologio;
//mostra l'ora corretta ogni 111 ms
blocco_setTimeout = window.setTimeout(function(){getOraLocaleCorretto();}, 111);
}
//ogni tot secondi recupero l'ora esatta dal server
//se non ci sono errori aggiorno il delta
function recupera_ora()
{
$("span1").style.visibility = "visible";
ajax("?ajax_comando=1", onload, null, onerror);
function onload()
{
$("span1").style.visibility = "hidden";
var t = this.request.responseText;
window.clearTimeout(blocco_setTimeout);
var j = null;
try
{
j = eval("(" + t + ")");
}
catch (err)
{
j = {anno:'-1'};
}
if(j.anno != "-1")
{
var millisecondi = new Date(j.anno, j.mese, j.giorno, j.ora, j.minuto, j.secondo, j.millisecondo).getTime();
delta = millisecondi - new Date().getTime();
}
getOraLocaleCorretto();
window.setTimeout("recupera_ora()", Timeout);
Timeout = Timeout * 2; if(Timeout > 60000) Timeout = 60000;
}
function onerror()
{
window.clearTimeout(blocco_setTimeout);
$("span1").style.visibility = "hidden";
getOraLocaleCorretto();
window.setTimeout("recupera_ora()", Timeout);
Timeout = Timeout * 2; if(Timeout > 60000) Timeout = 60000;
}
}
// ]]>
</script>
</head>
<body onload="return window_onload()">
<form name="form1" method="post" action="ora esatta.aspx" id="form1">
<h3>
Tempo Campione Italiano</h3>
Orologio sincronizzato con i segnali di tempo campione generati all' Istituto Elettrotecnico Nazionale "Galileo Ferraris" in Torino.</p>
Data:
<span id="Label_data">giovedì 5 aprile 2007</span></p>
<span style="display:none;">Ore:
<span id="Label_ore" style="font-size:XX-Large;">9.54.24</span>server
</span>
Ore:
<span id="Label_ore_client" style="font-size:XX-Large;"></span>
<span id="span1" style="color:Red; font-weight:bold; visibility:hidden;">refresh</span>
</p>
Refresh</p>
</form>
<applet codebase="http://www.bipm.org/SntpV2/applet/" code="bipm_daytime.bipm_daytime.class" name="BIPM_DAYTIME" align="middle" height="147" hspace="0" vspace="0" width="350">
<param name="SERVERURL" value="http://www.bipm.org/SntpV2/servlet/SNTPServlet"/>
<param name="POLLING" value="10"/>
</applet>
</body>
</html>