Ответ 1
Может кто-нибудь объяснить, как работает Date.UTC
Date.UTC создает временное значение для предоставленного года, месяца, даты и т.д. без какого-либо смещения. Поэтому, если для клиентской машины задано, скажем, UTC +05: 00, то:
var d = new Date(Date.UTC(2013, 11, 30, 12, 0, 0));
создаст дату, эквивалентную полудню 30 декабря 2013 года в Гринвиче. Предупреждение о дате будет печатать местное время (при условии +5: 00), эквивалентное 2013-12-30T17: 00: 00 + 05: 00.
и как установить часовой пояс, чтобы часы обратного отсчета отсчитывались в зависимости от указанного часового пояса?
Вы не можете установить часовой пояс, однако вы можете использовать значения UTC для создания объекта даты, отрегулировать часы и минуты для смещения, а затем использовать методы UTC для получения компонентов даты и времени для обратного отсчета.
например.
function z(n){return (n < 10? '0' : '') + n;}
var d = new Date(Date.UTC(2012, 11, 30, 12, 0, 0));
d.setUTCHours(d.getUTCHours() - 7);
alert(d.getUTCFullYear() + '-' + z(d.getUTCMonth() + 1) + '-' +
z(d.getUTCDate()) + 'T' + z(d.getUTCHours()) + ':' +
z(d.getUTCMinutes()) + ':' + z(d.getUTCSeconds()) + '-07:00'
);
// 2012-12-30T05:00:00-07:00
Если используются не-UTC-методы, локальное смещение влияет на результат.