Angular 日期格式在时间之前添加 'at'

Angular Date Formatting add the 'at' before time

有没有简单的方法可以在我的日期和时间之间添加 'at' 这个词,所以它看起来像这样:2015 年 1 月 20 日 11:49 上午,而不是 2015 年 1 月 20 日,11:49上午。我尝试了 longfull,但我不想显示秒数和区域设置。

    2015-01-20 16:49:07+00:00

{{ myDate | date : 'medium' }}

您可以通过添加新的 Custom Pipe 或在组件中处理 DatePipe (Angular built-in)

附上一张Stackblitz Demo供大家参考

方法 #1 - 自定义管道

@Pipe({
  name: 'dateAtInsert'
})
export class DateAtInsertPipe implements PipeTransform {

  transform(value: string) {
    return value
      .replace(/,\s(?=\d+:)/g, ' ')
      .split(/\s(?=\d+:)/g)
      .join(' at ');
  }

}
{{ today | date : dateFormat | datAtInsert }}       // Dec 8, 2020 at 8:26 AM

方法 #2 - 组件中的日期管道

const today = new Date();
const transformDate = this.datePipe.transform(today, this.dateFormat);

this.formattedDate = transformDate
   .replace(/,\s(?=\d+:)/g, ' ')
   .split(/\s(?=\d+:)/g)
   .join(' at ');
<h1>{{ formattedDate }}<h1>             // Dec 8, 2020 at 8:26 AM

方法 #3 - 在日期格式中添加 at(组件中的 DatePipe)

dateFormat: string = 'MMM d, y AT h:mm a';        // Need to use an uppercase AT since lowercase "a" is reserved with AM/PM in date formats
                                                  // While capital "A" and "T" doesn't hold any value in date formats so it's safe to use


const transformDate = this.datePipe.transform(this.today, this.dateFormat);

this.formattedDate = transformDate.replace('AT', 'at');

方法 #4 - 在日期格式中添加 at(HTML 中的 DatePipe)

模板

{{ insertDateAt(today | date: 'MMM d, y AT h:mm a') }}

组件

insertDateAt(date: string): string {
  return date.replace('AT', 'at');
}

注意:

  • 如果您希望时间采用这样的格式 11:49 AM 避免使用 medium,因为它包括秒,例如 11:49:29 AM
  • 改用自定义格式,在我们的例子中我们使用 MMM d, y, h:mm a 或者您可以在 Angular's DatePipe Documentation
  • 找到更多格式