检查数组中的数据是字符串还是日期并进行相应转换
check if the data in array is string or date and convert accordingly
我想查看p-table中循环过来的数据是字符串类型还是日期类型
我有一个名为 newValue 的键
其值可以是 newValue: "Percentage"
或 newValue: "2021-03-25T15:55:42.136Z"
如果它的日期我想将数据显示为 "3/25/21, 9:25 PM"
否则正常字符串 "Percentage"
<td style="width: 10%;">
{{rowData?.histories.newValue ? getDateorStringValue(rowData?.histories.newValue) : 'N/A'}}
</td>
getDateorStringValue(...)
我正在使用的功能是如何实现的吗?
您可以编写一个快速管道来进行比较。
日期-或-string.pipe.ts
import { Inject, LOCALE_ID, Pipe, PipeTransform } from "@angular/core";
import { DatePipe } from "@angular/common";
export const isDate = (date: string) => {
return !!Date.parse(date);
};
@Pipe({
name: "dateOrString"
})
export class DateOrStringPipe extends DatePipe implements PipeTransform {
constructor(@Inject(LOCALE_ID) locale: string) {
super(locale);
}
transform(
value: any,
format?: string,
timezone?: string,
locale?: string
): any {
return isDate(value)
? super.transform(value, format, timezone, locale)
: value;
}
}
用法
<td style="width: 10%;">
{{ rowData.histories.newValue | dateOrString:'M/dd/yy, h:mm a'}}
</td>
请注意,使用 Date.parse()
的条件可能仅在与字符串进行比较时才有效。您可以找到 here.
更好的比较方法
工作示例:Stackblitz
我想查看p-table中循环过来的数据是字符串类型还是日期类型
我有一个名为 newValue 的键
其值可以是 newValue: "Percentage"
或 newValue: "2021-03-25T15:55:42.136Z"
如果它的日期我想将数据显示为 "3/25/21, 9:25 PM"
否则正常字符串 "Percentage"
<td style="width: 10%;">
{{rowData?.histories.newValue ? getDateorStringValue(rowData?.histories.newValue) : 'N/A'}}
</td>
getDateorStringValue(...)
我正在使用的功能是如何实现的吗?
您可以编写一个快速管道来进行比较。
日期-或-string.pipe.ts
import { Inject, LOCALE_ID, Pipe, PipeTransform } from "@angular/core";
import { DatePipe } from "@angular/common";
export const isDate = (date: string) => {
return !!Date.parse(date);
};
@Pipe({
name: "dateOrString"
})
export class DateOrStringPipe extends DatePipe implements PipeTransform {
constructor(@Inject(LOCALE_ID) locale: string) {
super(locale);
}
transform(
value: any,
format?: string,
timezone?: string,
locale?: string
): any {
return isDate(value)
? super.transform(value, format, timezone, locale)
: value;
}
}
用法
<td style="width: 10%;">
{{ rowData.histories.newValue | dateOrString:'M/dd/yy, h:mm a'}}
</td>
请注意,使用 Date.parse()
的条件可能仅在与字符串进行比较时才有效。您可以找到 here.
工作示例:Stackblitz