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

Convert seconds to HH-MM with JavaScript?

我一直在为 HH:MM:SS 使用这个优秀的函数,但我如何将它修改为 return 只有 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}).*/, "");
}
function formatSeconds(seconds)
{
    var date = new Date(1970,0,1);
    date.setSeconds(seconds);
    return date.toTimeString().replace(/.*?(\d{2}:\d{2}).*/, "");
}

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

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

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"))

使用日期格式化秒的问题在于它无法处理超过 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 的主机上都能工作。