Chiederei il fuso orario all'utente e se da lui si cambia tra ora solare e legale.
In base a queste informazioni deciderei cosa fare.
Se il fuso scelto è uguale a quello del server non si fa niente.
Se il fuso orario è diverso si prende il timestamp del server e si fa +/- (a seconda se il fuso dell'utente è avanti o indietro rispetto al server) ore_di_differenza x 3600
Se il server fa il cambio ora solare/legale e anche l'utente, allora basta
Se il server fa il cambio ora solare/legale e l'utente no, allora devi vedere se attualmente il server è sull'ora legale, in tal caso si fa un ulteriore -3600 altrimenti no.