微秒到人类可读输出

时间:2017-04-03 09:44:52

标签: javascript datetime

我需要将微秒转换为人类可读的格式。虽然我可以将它转换为HH:MM:SS.MS,但我不确定剥离00的最佳方式:如果存在我想使用这些

input = [ 12040000, 60042000, 15582000000 ]
output = [ '12.04', '1:00.42', '4:19:27' ]

function formatMark(mu) {
    var timeList = []
    var ms = mu / 1000
    var time = new Date(ms)

    var ms = time.getMilliseconds()
    var ss = time.getSeconds()
    var mm = time.getMinutes()
    var hh = time.getHours()

    if (ms > 1) timeList.push(ms) //
    if (ss > 1) timeList.push(ss) // 
    if (mm > 1) timeList.push(mm) //
    if (hh > 1) timeList.push(hh) //

    return { hh + ':' + mm + ':' + ss + '.' + ms }

 }

不幸的是,上面的代码不起作用,可能出于多种原因,我知道更好,但我真的只需要一个传统的可读输出。任何提示/建议都表示赞赏!

2 个答案:

答案 0 :(得分:0)

  

不幸的是,上面的代码不起作用,可能是多个代码   我知道更好的原因,

return语句的语法错误

尝试用

替换return { hh : hh, mm : mm, ss : ss, ms : ms } 语句
formatMark

最后,使用var output = formatMark(157442234333332221); var finalOutput = Object.keys( output ).map( function( key ){ return key + ":" + output[key] } ).join(","); 的输出作为

{{1}}

答案 1 :(得分:0)

根据您的问题,您将参数作为数组类型传递但该函数与此不兼容,您计算可读时间字符串的逻辑是正确的。唯一的问题是您需要为数组类型参数处理此问题。

function formatMark(mu) {
     var timeList = []
     mu.map(function(t){
           var ms = mu / 1000
           var time = new Date(ms)
           var ms = time.getMilliseconds()
           var ss = time.getSeconds()
           var mm = time.getMinutes()
           var hh = time.getHours()

           if (ms > 1) timeList.push(ms) //
           if (ss > 1) timeList.push(ss) // 
           if (mm > 1) timeList.push(mm) //
           if (hh > 1) timeList.push(hh) //
           var timeString=hh + ':' + mm + ':' + ss + '.' + ms 
           console.log(timeString)
           timeList.push(timeString)
      })
      return timeList;
}

此函数接受数组并返回可读时间字符串数组。