Все оказывается намного страшнее.
Давай разберем простейшую задачу, нам тупо нужно узнать часовой пояс у локала и некого левого времени :

Код AS3:
var i:Number = Date.parse("Thu, 05 Jul 2012 21:00:00 +0400");
var d:Date = new Date(s);
d.setTime(i);
trace( d.toTimeString().split(' GMT')[1] ); // +0700
var dateLoc:Date = new Date() // локальное время, установили пояс +0700
trace( dateLoc.toTimeString().split(' GMT')[1] ); // +0700
С какого фига у нас одни часовые пояса показывает когда даты совсем разные и часовые пояса разные установили?
P.s. expl про сервер ты не понял немного. Мне просто приходит строка с левым временем, не важно каким, но пояс всегда +0400 , но будем считать , что может и пояс быть любой. Это такая вот вещь, так вообщем надо.
Можно проще все объяснить. Начинается ( некое ) событие , сервер всегда нам шлет начало события по МСК. У пользователя на компе может быть любое время и часовой пояс, нам соотв нужно подогнать МСК время которое пришло к локальному у пользователя. Тоесть если пришло 18.30 +0400 , а у пользователя 18.30 +0300 , то у него должно быть показано 17:30
Добавлено через 10 минут
P.s. fck ! Тему можно закрывать, ктож знал, что любое setTime само считает от локального и никаких математика вообще не надо.
Но с другой стороны, чтобы показать свою дату, придется с сервера строками вырезать минуты и часы и делать по таймеру прибавление счетчика... ужость