JavaScript часы выводящие определенный часовой пояс

Рейтинг: 0Ответов: 2Опубликовано: 13.04.2015

Помогите решить проблему с часовым поясом (в частности +11 часов от москвы)

  function digitalWatch() {

var d = new Date();
    var hours = d.getHours();
    var minutes = d.getMinutes();
    var seconds = d.getSeconds();
    if (hours < 10) hours = "0" + hours;
    if (minutes < 10) minutes = "0" + minutes;
    if (seconds < 10) seconds = "0" + seconds;
    document.getElementById("digital_watch").innerHTML = hours + ":" + minutes + ":" + seconds;
    setTimeout("digitalWatch()", 1000);
  }
<body>
<p id="digital_watch" style="color: #f00; font-size: 190%; font-weight: bold;"></p>

Ответы

▲ 1Принят

Исхожу из того +11 часов от Москвы - значит +11 часов от текущего времени, потому что нигде не увидел что исходное время задается как Московское.

// +new Date() - возвращает timestamp в милисекундах
// 60 * 60 * 11 * 1000 - вычисляем количество секунд в 11 часах
var diff = +new Date() + 60 * 60 * 11 * 1000;
var now  = new Date();
var diff = new Date(diff);

// Текущее время
console.log(now.getHours() + ':' + now.getMinutes() + ':' + now.getSeconds());
// Время со сдвигом на 11 часов вперед
console.log(diff.getHours() + ':' + diff.getMinutes() + ':' + diff.getSeconds());

▲ 1

В объекте Date есть метод позволяющий получить текущее время по стандарту UTC

var d = new Date(Date.UTC(2015, 4, 13, 12, 0, 0));

Интерпретатор автоматически проверит часовой пояс установленный в клиентской ОС и добавит к дате нужный сдвиг.

Чтобы установить сдвиг самому.

d.setUTCHours(d.getUTCHours() - date_shift);

Еще немного справки по часовым поясам в js.