Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript将毫秒转换为时间_Javascript - Fatal编程技术网

Javascript将毫秒转换为时间

Javascript将毫秒转换为时间,javascript,Javascript,我有这个密码 <script> function msToTime(Milliseconds) { var Hours = Milliseconds / (1000*60*60); var Minutes = (Milliseconds % (1000*60*60)) / (1000*60); var Seconds = ((Milliseconds % (1000*60*60)) % (1000*60)) / 1000

我有这个密码

<script>
function msToTime(Milliseconds)
    {
        var Hours = Milliseconds / (1000*60*60);
        var Minutes = (Milliseconds % (1000*60*60)) / (1000*60);
            var Seconds = ((Milliseconds % (1000*60*60)) % (1000*60)) / 1000;
              return Hours + ":" + Minutes + ":" + Seconds;
    }
var xtime=d1.getTime();
    alert(xtime);
    alert(msToTime(xtime));
</script>
它给了我这个输出 毫秒警报是正确的

下一个警报是我收到的错误消息:


代码有什么问题?

让标准库为您完成工作-

function msToTime(Milliseconds)
    var d = new Date(Milliseconds);
    return [d.getHours(), d.getMinutes(), d.getSeconds()].map(function (v) {
        return v < 10 ? '0' + v : v;
    }).join(':');
}
试试这个:

function msToTime(ms) {
    var d = new Date(ms);
    return (
        ("0" + d.getHours()).slice(-2)
    ) + ":" + (
        ("0" + d.getMinutes()).slice(-2)
    ) + ":" + (
        ("0" + d.getSeconds()).slice(-2)
    ); 
}  
它将以HH:MM:SS格式返回时间

编辑: .slice-2方法在前面添加0后返回最后两位数。 例如,如果值为045秒,则返回45秒值;如果第二个值为07,则返回07秒值。 即使值小于10,也只能从值中选取最后两位数字,使其成为两位数字值


另外,小时数应为%60'd了解问题的最佳方法是将中间值放入临时变量中,并在调试器中遍历代码。您不使用Date对象执行此任务是否有原因?在javascript中使用parse关键字从google中检查它。d1.getTime中的d1是什么;这是可行的。但是秒是个位数。我想这不会是个问题。thnx添加一些类似于v<10的值?”0'+v:v。。。实际上,组合几个函数是非常基本的编码技术,因为我们使用es5中的映射,如果时间保证在一天之内,那么这一行代码会更简单:new datemillizes.toJSON.slice11,-5+1表示酷的“0”+v.slice-2,我也使用它。。。但在我的解决方案中使用类似数组的方法,您就可以使用map,这样会更酷。@kirilloid Personnaly,我通常不建议使用map,因为IE8及更低版本不支持它。无论如何,如果我这样做,我会警告OP这一点,并提供如下解决方法:。使用“0”+v.slice-2的目的是使您的值成为双位数字。@wared description添加在回答中。