创建具有两位小数的运行时

create runtime with two decimal places

我需要为用户创建经过的时间并在屏幕上显示如下:00:00:00.

目前我正在按照下面的方式进行操作,但它采用 0:0:0 格式,我需要采用 格式]01:03:59.

用户点击开始并开始计算运行时间。

我该怎么做?

打字稿:

this.duration = {
  hours: 0,
  minutes: 0,
  seconds: 0
};



start(): void {
  const counter = setInterval(() => {

  this.duration.seconds += 1;

  if (this.duration.minutes === 60) {
    this.duration.hour += 1;
  }

  if (this.duration.seconds === 60) {
    this.duration.minutes += 1;
  }

  if (this.duration.seconds === 60) {
    this.duration.seconds = 0;
  }

}, 1000)

}

在html:

{{ duration.hours }}:{{ duration.minutes }}:{{ duration.seconds }}

您好,您可以使用 Angular pipe

来实现
<div>{{time| date:'HH:mm:ss'}}</div> 12:01:59

您可以编写自己的管道,如下所示:

import _ from 'lodash';
import { Pipe, PipeTransform } from '@angular/core';

// ...

@Pipe({name: 'doubleDigits'})
export class DoubleDigitsPipe implements PipeTransform {
  transform(value: any) {
    return _.isNumber(value) && value <= 9 ? "0"+value : value;
  }
}

// HTML

{{ duration.hours | doubleDigits }}:{{ duration.minutes | doubleDigits }}:{{ duration.seconds | doubleDigits }}

这会将您的号码转换为模板中的字符串,但我认为这不会造成问题。

您可以为每个部分使用现有的 angular 数字管道

{{ duration.hours | number:'2.0-0'}}:{{ duration.minutes | number:'2.0-0'}}:{{ duration.seconds | number:'2.0-0'}}

这样,如果您的小时数超过 99,它也会正确显示


{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.

minIntegerDigits: The minimum number of integer digits before the decimal point. Default is 1.
minFractionDigits: The minimum number of digits after the decimal point. Default is 0.
maxFractionDigits: The maximum number of digits after the decimal point. Default is 3.

工作Demo