网站搜索

javascript - 在 Typescript Angular 中格式化时间


我想在我的 FormArray 中迭代 time,并且我从 API 收到的时间格式如下:

14.21.00

我想把这个时间格式化成这样:

2:21 PM

我正在尝试使用 Angular DatePipe 进行如下格式化:

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

但是出错了:

错误:InvalidPipeArgument:无法将 "14.21.00" 转换为日期用于管道 'DatePipe'

我在 Stackblitz 中重现了这里

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

答案#1

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

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

要使用“date”管道,时间也必须跟随一个日期,因此我们可以传递任何日期仅用于验证 date 管道。例如,这个可以工作:{{'1990-10-10 01:02:03' | date:'shortTime'}},而这个则不行:{{'01:02:03' | date:'shortTime'}}。

我还用 split 和 join 将时间中的“.”(点)替换为“:”,以按需要格式化。

答案#2

希望你一切都好!!!

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

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>

希望我能够解决你的问题!祝编码愉快!!干杯!!!