Newsgroup: it.comp.www.php
Titolo: questioni sui fusi orari

Ciao a tutti.
Ho necessità di fare un servizio personalizzabile per i vari fusi orari, in 
poche parole deve restituire dati personalizzati tenendo conto del fuso di 
chi fa la richiesta (il fuso viene specificato esplicitamente). 
In pratica il servizio deve fornire dati consistenti per la data 
attualmente in vigore nel paese di origine.
Poi dovrebbe calcolare l'expire del documento in modo che risulti scaduto 
alla mezzanotte del paese di origine.
il problema è che ho un po' di confusione in testa per calcolare le date.
Avendo il server settato sull'ora italiana (CET, GMT+1) come faccio a 
calcolare l'ora di riferimento (GMT)?
Basta togliere 60 minuti? E per quanto riguarda l'ora legale? bisogna 
considerare anche quella (togliere 2 ore) o anche l'ora GMT segue l'ora 
legale?
-- 
L'indirizzo di posta non è valido! Per contattarmi in privato usate il 
form: 
http://www.gerry.it/serve/mail/
The mail address given is invalid, if you want to contact me, please use 
this form instead: 
http://www.gerry.it/serve/mail/
Se riesci a mantenere la calma quando tutti intorno a te hanno perso la 
testa, forse non hai afferrato bene la situazione. (J. Kerr)

 come faccio a calcolare l'ora di riferimento (GMT)?
http://it2.php.net/manual/en/function.gmdate.php

 
http://it2.php.net/manual/en/function.gmdate.php
OK, ma la gmdate mi da una data già formattata.
Tu suggerisci di usarla con ul parametro 'U' per avere il timestamp?
Il mio problema principale è poi come calcolare gli expires validi per la 
timezone di destinazione.


per avere il timestamp?
allora utilizzi
http://it2.php.net/manual/en/function.gmmktime.php
cioe':
$gmtimestamp=gmmktime();
-- 
http://e-0.org

 $gmtimestamp=gmmktime();
Credo di aver capito.
Curiosità: Se gmdate() è l'equivalente di date() e gmmktime() è 
l'equivalente di mktime() perchè non esiste una gmtime()?


l'equivalente di mktime() perchè non esiste una gmtime()?
perche' gmtime() e' implementato da gmmktime invocato senza parametri.
Se guardi qui:
http://it2.php.net/manual/en/function.gmmktime.php
vedrai che i parametri sono facoltativi.
-- 
http://e-0.org

 vedrai che i parametri sono facoltativi.
OK, ma anche time() è "ridondante", visto che potresti usare mktime() 
senza parametri... vabbè, era solo per cercare il pelo nell'uovo :D
Comunque ho ancora un dubbio di concetto di cui non sono molto sicuro...
ho un file che scade a mezzanotte (di un fuso x), quindi voglio settare 
l'expire negli headers:
header("Expires: ddd, ddd mmm yyyy hh:mm:ss GMT");
le date HTTP devono essere GMT... o almeno così ho letto nell'RFC 2616
 
Per calcolare la data di scadenza rispetto a GMT come faccio, sapendo la 
differenza in ore del fuso? se faccio:
date('D, d M Y H:i:s \G\M\T',gmmktime(23,59,59,3,29,2004));
Non fa quello che desidero, mi dice che ore sarebbero sul server (GMT +
0200, in caso dell'Italia) quando GMT è a mezzanotte.
La cosa giusta da fare sarebbe:
// mezzanotte epoch
$epoch = mktime(23,59,59,3,29,2004);
// correzzione fuso
$gmTimeStamp = $epoch + (-$gmtOffset * (60*60));
// scadenza gmt
$RFC2616 = date('D, d M Y H:i:s \G\M\T',$gmTimeStamp);
Dovrebbe essere giusta con $gmtOffset settato sulla differenza in ore del 
fuso che voglio ottenere.... O almeno credo.


Comunque ho ancora un dubbio di concetto di cui non sono molto sicuro...
da qua in poi ti lascio proseguire da solo: non ho ancora avuto
occasione di litigare con i fusi orari.
-- 
http://e-0.org