Nevím jak Vám, ale i při změně časového pásma na mi script od Jakuba funguje. Přesněji ta jeho druhá optimalizovaná verze.
Pokud Vám to ukazuje špatný čas při změně čas. pásma, bude problém v prohlížeči zřejmě.
Na řádku s
var time_offset = time_server - (new Date()).getTime();
se počítá časový rozdíl, tudíž předpokládám že metod getTime objektu Date vrací špatné údaje.
V jakém prohlížeči a verzi to zkoušíte?