
Originariamente inviata da
marino51
se lo fai ti ringrazio
Lato client:
codice:
<script>
var data = new Date();
TimeZone=data.getTimezoneOffset(); // differenza di orario da quello UTC. Il valore è necessario al server per capire che orario deve far visualizzare al client.
</script>
ora, in JS, ho la variabile TimeZone contenente la differenza di minuti dall'ora UTC
Questa variabile va passata alla routine lato server, ognuno la passa come vuole. Io per necessità l'ho passata in modalità asincrona datosi che non dovevo abbandonare la mia pagina.
La mia routine lato server è nel file "ReadConfig.asp" che al suo interno imposta diversi parametri.
Ora quello che segue è in ASP ma non credo ci siano difficoltà per tradurlo in PHP o altro linguaggio.
codice:
<%@LANGUAGE="VBSCRIPT"%>
<script runat="server" language="jscript">
function OffSetTimeSrv() {
var d = new Date(); // data e ora del server
var offset = d.getTimezoneOffset(); // differenza di minuti dall'ora UTC
return offset;
}
</script>
<%
TimeZoneCli=request.QueryString("TimeZone") 'qui recupero la TimeZone del client che ho passato come parametro.
TimeZoneSrv=OffSetTimeSrv() ' la TimeZone del server
' creo 2 cookie contenenti i 2 TimeZone. Uso un cookie in modo da poterli recuperare quando voglio
Response.Cookies("www.mysite.it") ("TimeZoneCli")=TimeZoneCli
Response.Cookies("www.mysite.it") ("TymeZoneSrv")=TimeZoneSrv
%>
Ora so esattamente le differenze di tempo da l'ora UTC sia per in server che per il client.
A questo punto, dove occorre posso effettuare la modifica dell'ora; sempre lato server. Vediamo come:
codice:
<%
DataOra=MiaDataOra ' la data e ora da cambiare secondo le necessità del client
TimeZoneSrv=Request.Cookies("www.mysite.it") (TimeZoneSrv) ' recupero cookie Srv
TimeZoneCli=Request.Cookies("www.mysite.it") (TimeZoneCli) ' recupero cookie Cli
DataOra=DateAdd("n",TimeZoneSrv,DataOra) ' aggiungo o elimino i minuti di Srv per portare la data a UTC
DataOra=DateAdd("n",-TimeZoneCli,DataOra) ' aggiungo o elimino i minuti di Cli per portare la data da UTC a Zone Cli. Da notare il segno - prima di TimeZoneCli. Questo è essenziale per ribaltare il segno della variabile, altrimenti funziona al contrario.
response.write "La data cambiata: "&DataOra
%>