...ma... hai già detto tutto tu.... salvi sempre e comunque la data/ora del server....
aggiungi una colonna alla tabella dei tuoi utenti che chiamerai timezone...
quando devi stampare una data stampi sempre e comunque $data+$timezone. Se si è connessi come utenti ripeschi timezone dal db(ovvero +1,+3,0,-12 ecc), sennò lo imposti a zero (un guest vedrà la data del server.) Che c'è da aggiungere?