Здравствуйте.
Проанализируйте свой код... Особенно строку
check24(((gmt - х) > 24) ? ((gmt - х) - 24) : (gmt - х))
Может так пойдет?!
function GetTime() {
var offset = arguments[0] || 0;
var d = new Date();
// количество миллисекунд, прошедших с 1 января 1970
var localTime = d.getTime();
// получаем локальное UTC смещение в минутах и конвертируем в миллисекунды
var localOffset = d.getTimezoneOffset() * 60000;
// получаем текущее время UTC добавляя сдвиг местного времени
var utc = localTime + localOffset;
return new Date(utc + (3600000 * offset));
}
// Пример использования
var cities = {
"Almaty" : 6,
"Amman" : 2,
"Amsterdam" : 1,
"Buenos Aires" : -3,
"Baghdad" : 3,
"Bahrain" : 3,
"Baku" : 4,
"Bangkok" : 7,
"Berlin" : 1,
"Bombay" : 5.5
};
console.log("Local time is "+new Date().toLocaleString());
for(var city in cities){
var offset = cities[city];
console.log("Local time in "+city+" is "+GetTime(offset).toLocaleString());
}