使用JavaScript将秒转换为HH-MM?

时间:2017-02-19 11:42:17

标签: javascript date format seconds

我一直在为HH:MM:SS使用这个优秀的功能,但我怎么能修改它以仅返回HH:MM,其中秒被截断或舍入。

function formatSeconds(seconds)
{
    var date = new Date(1970,0,1);
    date.setSeconds(seconds);
    return date.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1");
}

3 个答案:

答案 0 :(得分:3)

function formatSeconds(seconds)
{
    var date = new Date(1970,0,1);
    date.setSeconds(seconds);
    return date.toTimeString().replace(/.*?(\d{2}:\d{2}).*/, "$1");
}

删除最后一个\d{2}并在第一个?后添加*

答案 1 :(得分:1)

使用Date格式化秒数的问题在于它无法处理超过24小时的时间和日期的变幻莫测。只需根据需要重新格式化值:

function formatSeconds(seconds) {
  function z(n) {return (n < 10 ? '0' : '') + n;}
  return z(seconds / 3600 | 0) + ':' + z((seconds % 3600) / 60 | 0)
}

// Some examples
[0,1,61,3600,3660,765467].forEach(function (seconds) {
  console.log(seconds + ' -> ' + formatSeconds(seconds))
});

没有日期,没有正则表达式,没有库,没有依赖关系,并且在每个支持ECMAScript的主机中都有效。

答案 2 :(得分:0)

虽然理想的方法是使用moment.js但是如果你想使用自定义功能,你可以尝试这样的事情:

&#13;
&#13;
function formatSeconds(milliseconds, format) {
  var dateObj = new Date(milliseconds);

  function getDoubleDigits(value){
    return ("0" + value).slice(-2)
  }
  
  var o = {
    DD: getDoubleDigits(dateObj.getDate()),
    MM: getDoubleDigits(dateObj.getMonth() + 1),
    YY: dateObj.getYear(),
    YYYY: dateObj.getFullYear(),
    hh: getDoubleDigits(dateObj.getHours()),
    mm: getDoubleDigits(dateObj.getMinutes()),
    ss: getDoubleDigits(dateObj.getSeconds())
  }
  
  var dilimeter = format.match(/[^\w]/)[0];
  return format.split(dilimeter).map(function(f){
    return o[f];
  }).join(dilimeter);
}

var today = new Date();
console.log(formatSeconds(+today, "DD-MM-YYYY"))
console.log(formatSeconds(+today, "hh:mm"))
&#13;
&#13;
&#13;