开发者

Firefox unexpected bahaviour when dealing with getHours()

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)

The expected result (at the time of this post) is 0 hours, 2 minutes, .. seconds. This is as well the result given by Opera, Chrome and IE. However, Firefox returns 1 hour, 2 minutes, etc. How to fix it?

Basically:

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

What I am doing is taking: new Date().getTime() - [some timestamp] == time passed So I need to know time passed from [some timestamp] in hours, minutes and seconds.


Well, the problem is with different locale browser settings. One way to solve the problem is to use UTC specific methods, e.g. getUTCTime(). Instead, I've written this small script to do the math:

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);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜