首页 > 解决方案 > 以编程方式将 Angular DateTime 管道用于 hh:mm:ss 格式

问题描述

我正在尝试将DatePipe用于 HH:MM:SS (或任何其他记录格式),就像我将DecimalPipe用于货币值一样。

但是,将我的逻辑传递给我的值之类的格式hh:mm:ss会立即变为07:00:00.

time = 'hh:mm:ss';
val = '1:02'; // user entered value
invalids = new RegExp('[^0-9:]{0,6}', 'g'); // time chars only
replaced = String(val).replace(invalids, ''); // remove non-hhmmss characters
let value = this.datePipe.transform(replaced, time); // format the value
console.log(value); // '07:00:00' why!?

这是StackBlitz中的重现:67

我怎样才能让组件接受那些预定义的格式来强制输入值?

标签: javascriptangulardatetimepipe

解决方案


Angular DatePipe 的输入类型为 any,但实际上需要一个日期、毫秒或 ISO 格式的字符串,而您没有提供它。

https://angular.io/api/common/DatePipe#input-value

value any 日期表达式:一个 Date 对象、一个数字(自 UTC 纪元以来的毫秒数)或一个 ISO 字符串 ( https://www.w3.org/TR/NOTE-datetime )。

您传入的数据不符合该标准,因此它可能不适用于您的用例,除非您可以在发送到datePipe.


推荐阅读