-
Fusi Orari
Vorrei realizzare una tabella dei fusi orari come questa http://www.timeanddate.com/worldclock/full.html dove accanto alla città in tempo reale c'è la data e l'orario del luogo.
E' possibile realizzarlo in html?
Ho provato a guardare il codice html di queste tabelle ma manca forse un file che fa aggiornare i valori
Oppure ancora piu bello sarebbe la cartina come questa http://www.worldtimezone.com/index24.html ma anche qui solito discorso, deve esserci una sistema esterno che fa aggiornare i valori.
Nessuno sa darmi indicazioni?
-
A vedere la prima tabella, non è una cosa difficile da realizzare, devi ovviamente avere una tabella di partenza con i vari fusi orari.
Ecco qualcosa che posso abbozzare (puoi trovare una prova dello script su http://dementialsite.altervista.org/.../fusiorari.htm):
Codice HTML:
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
/*
city: la città di riferimento
tz: fuso orario di riferimento (numero da 0 a 24, Roma = 13, Greenwich = 12)
*/
function TimeZone (city, tz)
{
this.city = city
this.zone = tz
}
// crea i vari fusi orari di riferimento (non so se siano tutti esatti...)
var data = new Array (
new TimeZone ("Roma", 13),
new TimeZone ("Londra", 12),
new TimeZone ("Atene", 14),
new TimeZone ("New York", 6),
new TimeZone ("Tokyo", 21),
... // altri fusi orari
new TimeZone ("Los Angeles", 3)
)
// calcola data e fuso orario del sistema
var now = new Date ()
var this_tz = 12 - now.getTimezoneOffset () / 60
// giorni della settimana (per la scrittura)
var days = new Array ("domenica", "lunedì", "martedì", "mercoledì", "giovedì", "venerdì", "sabato")
</SCRIPT>
</HEAD>
<BODY>
...
<SCRIPT LANGUAGE="JavaScript">
// scrive la tabella con i vari orari
document.write ('<TABLE>')
for (var i = 0; i < data.length; i++)
{
// inizio riga
document.write ('<TR>')
// scrive la città
document.write ('<TD>' + data[i].city + '</TD>')
// ricalcola la data per il fuso orario considerato
var tDate = new Date (now.getFullYear (), now.getMonth (), now.getDate (), now.getHours () + data[i].zone - this_tz, now.getMinutes (), now.getSeconds ())
// ... e la scrive in tabella
document.write ('<TD>' + days[tDate.getDay ()] + ' ' + tDate.getHours () + '.' + tDate.getMinutes () + '</TD>')
// fine riga
document.write ('</TR>')
}
// fine tabella
document.write ('</TABLE>')
</SCRIPT>
...
</BODY>
Questo a livello veramente di base, perché le difficoltà ci sono, eccotene un po':
- come si fa a sapere se uno stato ha in vigore l'ora legale (o "Daylight Savings Time" come lo chiamano gli americani?)
- questo script si basa sull'ora dell'orologio del sistema delle macchine che visitano la pagina, e non su un'orologio centralizzato (per quello serve PHP)
- fare una mappa con HTML e JavaScript (come nel secondo caso che hai linkato), poi, è veramente un'impresa...
Stammi bene...
-
Grazie del codice,
effettivamente il discorso dell'ora solare e legale che non viene usata in tutto il mondo è una cosa che non saprei nemmeno io come gestirle :roll:
E con un codice php si puo fare di meglio? con il discorso dell'orario non del computer ma assoluto?
-
Con il codice PHP puoi fare di meglio semplicemente perché prenderesti l'orario del server (che si suppone essere corretto) e non quello delle singole macchine che fanno eseguire il tuo JavaScript (per esempio, se io regolassi il MIO orologio di Windows al 31 ottobre 2000 alle ore 17.54, tutti gli script che si basano sull'oggetto Date - come questo, ma anche il più banale visualizzatore di data e ora - si baserebbero su questo orario).
Per quanto riguarda l'ora legale, il modo più semplice potrebbe essere quello di aggiungere alla tabella (realizzata con l'oggetto TimeZone di prima) anche le informazioni relative al periodo di ora legale, facendo più o meno qualcosa del genere (questo è JavaScript):
Codice:
function TimeZone (city, tz, startDST, endDST)
{
this.city = city
this.zone = tz
this.startDST = startDST
this.endDST = endDST
}
e fino a qui va bene... ma poi come costruisci l'oggetto, visto che i giorni di inizio e fine periodo cambiano ogni anno (in Italia dall'ultima domenica di marzo all'ultima di ottobre, negli altri paesi poi...).
Stammi bene...