将秒数转换为hh:mm:ss

时间:2018-04-03 13:20:08

标签: javascript momentjs

我正在尝试使用javascript将秒转换为hh:mm:ss格式。我发现了很多关于此问题的主题,如this one,但我仍然无法实现这一点。

这是我的代码:

function buildList(item, index) {
....
    var listItemTime = $('.time', listItem);
      listItemTime.html(secondsToHms(item.time));
      $('#dataList').append(listItem);
}

function secondsToHms(d) {
      var time = (new Date).clearTime()
              .addSeconds(d)
              .toString('H:mm:ss');

    console.log(time);
    return time;
}

我收到了错误:TypeError: (new Date(...)).clearTime is not a function

我也试着用时间:

function secondsToHms(d) {
      return moment().startOf('day')
            .seconds(d)
            .format('H:mm:ss');
}

我收到了错误:

  

时刻未定义

我用npm install moment --save安装了一下,然后试图要求它,但该组件不再工作了。

2 个答案:

答案 0 :(得分:2)

clearTimeDatejs的函数,这是您需要引入的附加依赖项。除非您将DateJs链接到您的代码,例如包括

<script src="https://cdnjs.cloudflare.com/ajax/libs/datejs/1.0/date.min.js"></script>

<head>块中,您会看到该方法不存在的错误。

您可能希望改为使用标准库函数toTimeString。哪个输出结果如14:26:27 GMT+0100 (GMT Daylight Time)

作为替代方案,如果必须使用HH:mm:ss格式,则可以使用以下代码打印所需的字符串。

function secondsToHms(d) {    
    var hours = d.getHours().toString().padStart(2, '0')    
    var minutes = d.getMinutes().toString().padStart(2, '0')    
    var seconds = d.getSeconds().toString().padStart(2, '0')

    return `${hours}:${minutes}:${seconds}`
}

可以看到在this jsfiddle

中运行这两种方法

答案 1 :(得分:1)

除非您需要完成更多日期工作,否则引入DateJsMoment或 - 我的偏好 - date-fp这个问题太简单了

您可以这样写:

const secondsToHms = s => ({
  hours: ((s - s % 3600) / 3600) % 60, 
  minutes: ((s - s % 60) / 60) % 60, 
  seconds: s % 60
})

然后根据自己的喜好格式化结果。

相关问题