Ciao,
Vedo che la cosa ti interessa. Permettimi di dissentire un'ultima volta.
La data unix timestamp (parliamo di php/mysql) viene fornita con il time zone impostato nel SO quindi quella dell'orario dell'orologio di sistema. Prova ne sia che per ottenerla in GMT devi usare la funzione gmmktime/gmtime. Giustamente hai osservato che un'ora GMT cioè l'ora di Greenwich, tale è per tutto il globo.
Un mio evento successo oggi alle ore 10.00 verrà memorizzato in GMT + 7200 sec, come successo alle 12.00, mentre il server di NY dirà nel tradurlo che erano le 12.00 - 14.400 secondi. Cosa inaccettabile se trasmetti notizie. Nota che questa ora locale è anche quella fornita da time(), mktime, date()
Se invece dico che in Italia alle ore 10.00 è caduto Babbo Natale, Verranno riportate le ore 10.00 in tutto il mondo, magari con la notazione: alle 10.00 ora locale....
Diciamo che a seconda del tipo di informazione potrebbe essere conveniente l'uso del unix timestamp oppure della data locale esplicita. Per correttezza, quindi, andrebbe sempre espresso il time zone utilizzato oppure lo spiazzamento dell'ora locale rispetto GMT.
Qui hai un test esemplificativo sul discusso.
codice:
echo "
mktime - ora unix locale
";
echo $ita = mktime (date("H"),date("i"),date("s"),date("m"),date("d"),date("Y"));
echo date(' + Z - T');
echo "
gmmktime - ora unix GMT
";
echo $gmt = gmmktime (date("H"),date("i"),date("s"),date("m"),date("d"),date("Y"));
echo gmdate(' + Z - T');
La risposta che ottieni è:
mktime - ora unix locale
1092128775 + 7200 - ora legale Europa occidentale
gmmktime - ora unix GMT
1092135975 + 0 - GMT Standard Time
Quindi per ottenere quanto hai supposto in precedenza dovresti utilizzare sempre l'ora GMT per la portabilità tra time zone. Le funzioni php hanno lo stesso comportamento sia in UNIX che in WIN (xp 2000).
Ciao.