有没有办法用Angular Pipes获取格式化的日期输出 更新:忽略UTC时间偏移

问题描述

我有一个ISO区域日期时间字符串,看起来像'2020-01-15T10:45:20+02:30[US/Denver]'。我试图得到一个有角度的管道,使它看起来像'15 Jan 2020 ( US/Denver )'。最好的方法是什么。

目前,我在此方面没有适当的管道实施方式,这就是我实现预期输出的方式

{{ dateInput | date:"dd-MMM-yyyy" }}{{ someFuntionThatReturnsTimeZoneWithStringManipulation() }}

预先感谢

解决方法

您可以扩展默认日期管道,拆分字符串,转换日期,然后返回组合的字符串。

这是一个快速实施

管道

import { Inject,LOCALE_ID,Pipe,PipeTransform } from '@angular/core';
import { DatePipe } from '@angular/common';

@Pipe({
  name: 'dateLocation',pure: true
})
export class DateLocationPipe extends DatePipe implements PipeTransform {
  constructor(@Inject(LOCALE_ID) locale: string) {
    super(locale);
  }

  transform(value: any,format?: string,timezone?: string,locale?: string): any {
    const date = value.split('[');
    return super.transform(date[0],format,timezone,locale) + ' (' + date[1].replace(/\]/g,')');
  }
}

组件模板

{{ dateInput | dateLocation:"dd MMM yyyy" }}

工作示例:Stackblitz

更新:忽略UTC时间偏移

您可以在split号上再执行一次+,而忽略时间戳记的时间偏移。

管道

return super.transform(
    date[0].split('+')[0],locale
  ) + 
  ' (' + 
  date[1].replace(/\]/g,')');

工作示例:Stackblitz

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...