Firefox неожиданное поведение при работе с getHours () - PullRequest
2 голосов
/ 19 июня 2011
function show_elapsed_time(from)
{
    var time_elapsed = new Date().getTime()-from;
    var date = new Date(time_elapsed);
    var date_elements = (pad(date.getHours()) + ':' + pad(date.getMinutes()) + ':' + pad(date.getSeconds())).split('');
    var date_string = '';

    for(i = 0; i < date_elements.length; i++)
    {
        date_string += '<div class="frame">' + date_elements[i] + '</div>';
    }

    $('#digital_clock').html(date_string);
}

show_elapsed_time(1308446047*1000)

Ожидаемый результат (на момент публикации): 0 часов, 2 минуты, ... секунды.Это также результат, полученный Opera, Chrome и IE.Однако Firefox возвращает 1 час, 2 минуты и т. Д. Как это исправить?

В основном:

var date = new Date(1453288); console.log(date.getHours()); // FF: 1, IE: 0, Opera 0

Что я делаю, принимает: new Date().getTime() - [some timestamp] == time passed Так что мне нужно знать времяпередается от [some timestamp] в часах, минутах и ​​секундах.

1 Ответ

1 голос
/ 19 июня 2011

Ну, проблема в разных настройках браузера. Одним из способов решения этой проблемы является использование UTC специальных методов, например, getUTCTime(). Вместо этого я написал небольшой скрипт для математики:

var time_elapsed    = new Date().getTime()-from;    
var hours           = Math.floor(time_elapsed/(3600*1000));
time_elapsed        -= hours*(3600*1000);
var minutes         = Math.floor(time_elapsed/(60*1000));
time_elapsed        -= minutes*(60*1000);
var seconds         = Math.floor(time_elapsed/1000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...