2016-03-23 3 views
0

Я использую этот код, чтобы показать простые часы на моем сайте:getSeconds() в JS возвращает секунды, которые не равны GMT секунд

function showClock() { 
    var today = new Date(), 
     h = today.getUTCHours(), 
     m = today.getMinutes(), 
     s = today.getSeconds(); 
    h = checkTime(h); 
    m = checkTime(m); 
    s = checkTime(s); 

    $('.hour').html(h); 
    $('.minutes').html(m); 
    $('.seconds').html(s); 

    setTimeout(showClock, 500); 
} 

function checkTime(i) { 
    if (i < 10) { 
     i = "0" + i; 
    } 
    return i; 
} 

Я заметил, что секунды, которые getSeconds() функция возвращает не равны GMT секунд (я использую http://wwp.greenwichmeantime.com/). Как я могу это исправить? Возможно, этот вопрос довольно странный, но мне нужна ваша помощь! :)

+0

Обратите внимание, что часовые пояса могут быть компенсированы на 15 или 30 минут, поэтому, если вы хотите показать время UTC, вы должны получить не менее UTC часов и минуты UTC. Секунды и миллисекунды должны быть одинаковыми. – RobG

ответ

0

Date функции основаны на часах пользователя. Измените свои часы на 1980 год, и JavaScript скажет, что это 1980 год.

0

Просто позвоните getUTCSeconds вместо getSeconds.

0
  1. Ваши системные часы могут быть неправильными.
  2. Вы должны использовать getUTCMinutes() и getUTCSeconds()
  3. В зависимости от того, что вы имеете в виду под "неправильным" (? Может быть, просто слегка), вы можете улучшить свой таймер, как это:

`

function showClock() { 
    var today = new Date(), 
    h = today.getUTCHours(), 
    m = today.getUTCMinutes(), 
    s = today.getUTCSeconds(), 
    ms = today.getUTCMilliseconds(); 
    h = checkTime(h); 
    m = checkTime(m); 
    s = checkTime(s); 

    console.log(h + ':' + m + ':' + s); 

    setTimeout(showClock, 1000 - ms); 
} 

function checkTime(i) { 
    if (i < 10) { 
    i = "0" + i; 
    } 
    return i; 
} 

... который будет пытаться всегда настраивать таймер так, чтобы он срабатывал при фактических вторых границах.

0

Не допускайте, чтобы смещения часовых поясов всегда находились на часовых границах. Существуют часовые пояса с 15-минутной зернистостью (например, Chatham Islands in NZ). Если вы используете .getUTCHours(), вы должны использовать соответствующие версии UTC минутных и вторых геттеров.

 Смежные вопросы

  • Нет связанных вопросов^_^