2

我想time在我的中进行迭代,FormArray并且我正在以以下格式从 API 接收时间:

14.21.00

我想像这样格式化这次:

2:21 PM

我正在尝试DatePipe像这样使用Angular进行格式化:

{{summon.value.summonTime | date :'shortTime' }}

但出现错误:

错误:InvalidPipeArgument:'无法将管道'DatePipe'的“14.21.00”转换为日期'

在这里,我在stackblitz中复制了

根据我的研究,14.21.00javascript/typescript 不支持时间格式,如果有任何指导和建议来解决这个问题。

4

3 回答 3

1

试试这个(在你的 stackblitz 代码上测试过):

time:{{'1990-10-10 '+ summon.value.summonTime.split('.').join(':') | date:'shortTime' }}

要使用“日期”管道,时间也必须跟在日期之后,所以我们可以传递任何日期来验证日期管道。例如,这有效:{{'1990-10-10 01:02:03' | 日期:'shortTime'}},这不起作用:{{'01:02:03' | 日期:'shortTime'}}。

我也替换了“。” (点)按时使用“:”进行拆分和连接以根据需要进行格式化。

于 2019-09-11T16:10:33.887 回答
0

希望你做得很好!!!

在您希望的文件夹中创建一个新管道。完成后,请在模块中提供详细信息(导入和声明):-

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

@Pipe({
  name: 'dateTransformer'
})
export class DateTransformerPipe implements PipeTransform {

  transform(value: any, args?: any): any {
    return value && value.length > 0 ? value.replace('.', ':') : value;
  }
}

完成后,在您的代码段中更新它:-

<ng-container [formGroupName]="i">
  <input type="checkbox" formControlName="isChecked" />
  {{ summon.value.summonTime | dateTransformer }}
  item: {{ summon.value.itemNo }}
  <br />
  time:{{ summon.value.summonTime | dateTransformer }}
  <br />
</ng-container>

希望,我能够解决您的问题!编码快乐!!干杯!!!

于 2019-09-11T16:03:17.823 回答
0

您可以使用ngx-moment如下

{{summon.value.summonTime | amParse:'HH.mm.ss' | amDateFormat:'hh:mm a'}}

查看修改后的 stackblitz https://stackblitz.com/edit/angular-moment-pipe-2324234

于 2019-09-11T16:06:54.373 回答