处理getHours()时出现Firefox意外行为

时间:2011-06-19 01:33:54

标签: javascript time

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 个答案:

答案 0 :(得分:1)

嗯,问题在于不同的区域设置浏览器设置。解决该问题的一种方法是使用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);