使用Angular 5.1中的date -pipe,我需要在小写中格式化时期字段类型(am/pm)。根据文档,
Tuesday, December 19, 7:00 am
应该是
date:'EEEE, MMMM d, h:mm a'
但是,周期字段类型总是在大写中显示,所以我看到了:
Tuesday, December 19, 7:00 AM
我是在做错什么还是这是已知的缺陷wtih Angular的日期格式?
您可以将日期分为2部分:
{{ today | date : 'EEEE, MMMM d, h:mm' }} {{ today | date : 'a' | lowercase }}
......................
update
这是使用内置的date
管道和 aaaaaaa 匹配器(返回小写a
或p
)的另一种简单方法:
<div>{{ today | date : 'EEEE, MMMM d, h:mm aaaaa'm'' }}</div>
更新了stackblitz:https://stackblitz.com/edit/angular-dcpgzb?file=papp/app.component.ponent.html
......................
Angular JS解决方案
app.controller('MainCtrl', function($scope, $locale) {
$locale.DATETIME_FORMATS.AMPMS = ['am', 'pm'];
$scope.today = new Date();
});
https://plnkr.co/edit/a49kjvodifxpavblmxei?p=preview
bummer。Angular 5仍然是这种情况。
我已经创建了一个自定义管道,该管道将小写的转换应用于匹配所提供的正则符合的文本。
小写匹配管
lowercase-match.pipe.ts
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'lowercaseMatch'
})
export class LowerCaseMatchPipe implements PipeTransform {
transform (input: any, pattern: any): any {
if (!this.isString(input)) {
return input;
}
const regexp = pattern instanceof RegExp ? pattern : new RegExp(pattern, 'gi');
return input.toLowerCase()
if (input.match(regexp)) {
return input.toLowerCase()
}
return input
}
isString(value: any): boolean {
return typeof value === 'string';
}
}
用法
导入到模块
import { LowerCaseMatchPipe } from './lowercase-match.pipe';
@NgModule({
declarations: [
...
LowerCaseMatchPipe
],
...
})
export class AppModule { }
使用小写AM/PM
显示日期{{ today | date : 'EEEE, MMMM d, h:mm a' | lowercaseMatch : 'am|pm' }}
在github问题上,有一些关于这个套管概念的讨论https://github.com/angular/angular.js/issues/8763
我想添加到安德里(Andriy)的响应中,并将其组合到单个插值
{{ (today | date: 'MMM d, y, h:mm') + (today | date: 'a' | lowercase) }}
我遇到了一个问题,即安德里(Andriy)提议的两个插值之间正在添加空间。如果您想要的话,那可以正常工作,但是我需要没有空间的小写:前任。2020年10月21日,下午1:16
最好呈现的表格是:
{{今天|日期:'Mmm D,Y,H:MM'|titlecase}}