如何解决有没有办法用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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。