Вы должны быть в состоянии преобразовать метку времени UTC в местную дату и просто вычесть локальное смещение (в минутах), так:
function utcToLocal(utc){
// Create a local date from the UTC string
var t = new Date(Number(utc));
// Get the offset in ms
var offset = t.getTimezoneOffset()*60000;
// Subtract from the UTC time to get local
t.setTime(t.getTime() - offset);
// do whatever
var d = [t.getFullYear(), t.getMonth(), t.getDate()].join('/');
d += ' ' + t.toLocaleTimeString();
return d;
}
Где я, смещение равно -600,поэтому мне нужно вычесть -36 000 000 мс из времени UTC (что фактически добавляет 36 000 000 мс).
Изменить
Возможно, я неправильно понял вопрос.
Внутреннее значениеЭкземпляр даты javascript представляет собой временной клип UTC в миллисекундах.Таким образом, если utc
является таким временем (например, 2012-08-19T00: 00: 00Z равно 1345334400000), тогда OP создаст экземпляр даты на основе этого значения, а toLocaleTimeString
покажет зависящую от реализации строку местного времени.для предоставленного времени UTC.
Так, если местное смещение часового пояса, скажем, -6 часов, тогда alert(new Date(1345334400000)))
покажет что-то вроде Сб 18 августа 2012 18:00:00 GMT-600 .
Я предполагал, что OP хотел установить местное время в то же время, что и время UTC, например, что 2012-08-19T00: 00: 00Z станет 2012-08-19T00: 00: 00 локальным.