格式化Moment.js持续时间

Som*_*ser 2 javascript momentjs

我正在使用Moment.js跟踪我的应用中操作的持续时间。目前,我有以下代码:

var startMoment = null;

var actionClock = null;
function startClock() {
  actionClock = setInterval(function(){ 
    if (startMoment === null) {
      startMoment = moment();
      $('#duration').text('00:00:00');
    } else {
      var now = moment();
      var span = moment.duration(now - startMoment);
      $('#duration').text(span.minutes() + ':' + span.seconds() + '.' + span.milliseconds());
    }
  }, 1000);     
}

function stopClock() {          
  clearInterval(actionClock);

      var now = moment();
      var span = moment.duration(now - startMoment);
      $('#duration').text(span.minutes() + ':' + span.seconds() + '.' + span.milliseconds());

  startMoment = null;
  actionClock = null;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,持续时间的格式很尴尬。我想将持续时间显示为mm:ss.lll。换句话说,请始终在分钟上显示两位数字,在秒上显示两位数字,并在毫秒上显示三位数字。目前,我看到的时长打印为1:2.45。如何格式化通过Moment.js创建的持续时间?如果无法做到这一点,我应该使用另一个库来跟踪持续时间并显示它吗?

谢谢!

JcT*_*JcT 5

一种执行此方法的方法可能是将持续时间转换回一个瞬间(也许使用毫秒),然后使用该瞬间的格式。

moment.utc(span.asMilliseconds()).format('mm:ss.SSS');
Run Code Online (Sandbox Code Playgroud)

moment.utc(span.asMilliseconds()).format('mm:ss.SSS');
Run Code Online (Sandbox Code Playgroud)
var startMoment = null,
  $durForm = $('#durationFormatted');

var actionClock = null;

function startClock() {
  actionClock = setInterval(function() {
    if (startMoment === null) {
      startMoment = moment();
      $('#duration').text('00:00:00');
      $durForm.text('00:00.000');
    } else {
      var now = moment();
      var span = moment.duration(now - startMoment);
      $('#duration').text(span.minutes() + ':' + span.seconds() + '.' + span.milliseconds());
      $durForm.text(moment(span.asMilliseconds()).format('mm:ss.SSS'));
    }
  }, 1000);
}

function stopClock() {
  clearInterval(actionClock);

  var now = moment();
  var span = moment.duration(now - startMoment);
  $('#duration').text(span.minutes() + ':' + span.seconds() + '.' + span.milliseconds());
  $durForm.text(moment(span.asMilliseconds()).format('mm:ss.SSS'));

  startMoment = null;
  actionClock = null;
}
Run Code Online (Sandbox Code Playgroud)

  • 我希望这会以大于23:59:59的持续时间打破。 (2认同)