Javascript秒到分钟和秒

新手上路,请多包涵

这是一个常见问题,但我不知道如何解决它。下面的代码工作正常。

var mind = time % (60 * 60);
var minutes = Math.floor(mind / 60);

var secd = mind % 60;
var seconds = Math.ceil(secd);

但是,当我达到 1 小时或 3600 秒时,它会返回 0 分和 0 秒。我怎样才能避免这种情况,所以它会返回所有分钟?

原文由 James Moore 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 801
2 个回答

要获得完整分钟数,请将总秒数除以 60(60 秒/分钟):

 var minutes = Math.floor(time / 60);

要获得剩余的秒数,请将整分钟乘以 60,然后从总秒数中减去:

 var seconds = time - minutes * 60;

现在,如果您还想获得完整的小时数,请先将总秒数除以 3600(60 分钟/小时·60 秒/分钟),然后计算剩余的秒数:

 var hours = Math.floor(time / 3600);
 time = time - hours * 3600;

然后你计算完整的分钟和剩余的秒数。

奖金:

使用以下代码漂亮地打印时间(由 Dru 建议)

 function str_pad_left(string,pad,length) {
 return (new Array(length+1).join(pad)+string).slice(-length);
 }

 var finalTime = str_pad_left(minutes,'0',2)+':'+str_pad_left(seconds,'0',2);

原文由 Gumbo 发布,翻译遵循 CC BY-SA 4.0 许可协议

另一个奇特的解决方案:

 function fancyTimeFormat(duration)
{
    // Hours, minutes and seconds
    var hrs = ~~(duration / 3600);
    var mins = ~~((duration % 3600) / 60);
    var secs = ~~duration % 60;

    // Output like "1:01" or "4:03:59" or "123:03:59"
    var ret = "";

    if (hrs > 0) {
        ret += "" + hrs + ":" + (mins < 10 ? "0" : "");
    }

    ret += "" + mins + ":" + (secs < 10 ? "0" : "");
    ret += "" + secs;
    return ret;
}

~~Math.floor 的简写,请参阅 此链接 了解更多信息

在线试用

原文由 Vishal 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏