Angular 5 - 如何在 DatePipe 中将句点字段类型设为小写
Angular 5 - how to make the period field type lowercase in DatePipe
在 Angular 5.1 中使用 DatePipe,我需要将句点字段类型 (AM/PM) 格式化为小写。根据 documentation,
Tuesday, December 19, 7:00 am
应该是
date:'EEEE, MMMM d, h:mm a'
但是,句点字段类型总是以大写显示,所以我看到了:
Tuesday, December 19, 7:00 AM
我是不是做错了什么,或者这是 Angular 日期格式的已知缺陷?
您可以将约会分为两部分:
{{ today | date : 'EEEE, MMMM d, h:mm' }} {{ today | date : 'a' | lowercase }}
.......
更新
这是实现它的另一种简单方法,使用内置的 date
管道和 aaaaa matcher(returns 小写 a
或 p
):
<div>{{ today | date : 'EEEE, MMMM d, h:mm aaaaa\'m\'' }}</div>
已更新 Stackblitz:https://stackblitz.com/edit/angular-dcpgzb?file=app%2Fapp.component.html
.......
ANGULARJS解决方案
app.controller('MainCtrl', function($scope, $locale) {
$locale.DATETIME_FORMATS.AMPMS = ['am', 'pm'];
$scope.today = new Date();
});
无赖。 Angular 5.
依然如此
我创建了一个自定义管道,它将小写转换应用于匹配提供的正则表达式的文本。
小写匹配管道
小写-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' }}
在 Angular 的 GitHub 问题上有一些关于此套管概念的讨论
https://github.com/angular/angular.js/issues/8763
我想添加到 Andriy 的响应中并将其组合成一个插值
{{ (today | date: 'MMM d, y, h:mm') + (today | date: 'a' | lowercase) }}
我遇到了一个问题,即在 Andriy 提案的两个插值之间添加了 space。如果这是你想要的,那可以工作,但我需要没有 space 的小写字母:
前任。 2020 年 10 月 21 日,1:16pm
最好的形式是:
{{ 今天 |日期:'MMM d, y, h:mm' |标题大写}}
在 Angular 5.1 中使用 DatePipe,我需要将句点字段类型 (AM/PM) 格式化为小写。根据 documentation,
Tuesday, December 19, 7:00 am
应该是
date:'EEEE, MMMM d, h:mm a'
但是,句点字段类型总是以大写显示,所以我看到了:
Tuesday, December 19, 7:00 AM
我是不是做错了什么,或者这是 Angular 日期格式的已知缺陷?
您可以将约会分为两部分:
{{ today | date : 'EEEE, MMMM d, h:mm' }} {{ today | date : 'a' | lowercase }}
.......
更新
这是实现它的另一种简单方法,使用内置的 date
管道和 aaaaa matcher(returns 小写 a
或 p
):
<div>{{ today | date : 'EEEE, MMMM d, h:mm aaaaa\'m\'' }}</div>
已更新 Stackblitz:https://stackblitz.com/edit/angular-dcpgzb?file=app%2Fapp.component.html
.......
ANGULARJS解决方案
app.controller('MainCtrl', function($scope, $locale) {
$locale.DATETIME_FORMATS.AMPMS = ['am', 'pm'];
$scope.today = new Date();
});
无赖。 Angular 5.
依然如此我创建了一个自定义管道,它将小写转换应用于匹配提供的正则表达式的文本。
小写匹配管道
小写-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' }}
在 Angular 的 GitHub 问题上有一些关于此套管概念的讨论 https://github.com/angular/angular.js/issues/8763
我想添加到 Andriy 的响应中并将其组合成一个插值
{{ (today | date: 'MMM d, y, h:mm') + (today | date: 'a' | lowercase) }}
我遇到了一个问题,即在 Andriy 提案的两个插值之间添加了 space。如果这是你想要的,那可以工作,但我需要没有 space 的小写字母: 前任。 2020 年 10 月 21 日,1:16pm
最好的形式是:
{{ 今天 |日期:'MMM d, y, h:mm' |标题大写}}