我正在使用日期管道来格式化我的日期,但如果没有解决方案,我就无法得到我想要的确切格式。我理解管道是错误的还是不可能的?

//our root app component
import {Component} from 'angular2/core'

@Component({
  selector: 'my-app',
  providers: [],
  template: `
    <div>
      <h2>Hello {{name}}</h2>
      <h3>{{date | date: 'ddMMyyyy'}}, should be 
      {{date | date: 'dd'}}/{{date | date:'MM'}}/{{date | date: 'yyyy'}}</h3>

    </div>
  `,
  directives: []
})
export class App {
  constructor() {
    this.name = 'Angular2'
    this.date = new Date();
  }
}

plnkr view)


当前回答

这对一些人来说可能很明显,但如果你想要这种日期格式

01.07.2022(在德国很常见)

你可以简单地这样做:

{{ myDate | date: "dd.MM.yyyy" }}

其他回答

在我的例子中,我使用的是格式为dd/MM/yyyy的日期字符串,并试图将其转换为不同的格式。

这个错误让我震惊。

在谷歌搜索之后,我发现日期字符串应该是iso认可的格式。

您可以使用一个简单的自定义管道来实现这一点。

import { Pipe, PipeTransform } from '@angular/core';
import { DatePipe } from '@angular/common';

@Pipe({
    name: 'dateFormatPipe',
})
export class dateFormatPipe implements PipeTransform {
    transform(value: string) {
       var datePipe = new DatePipe("en-US");
        value = datePipe.transform(value, 'dd/MM/yyyy');
        return value;
    }
}

模板:

{{currentDate | dateFormatPipe }}

使用自定义管道的好处是,如果你想在将来更新日期格式,你可以去更新你的自定义管道,它会反映每个地方。

自定义管道示例

更新:

鉴于Moment.js已弃用,这个答案不再有效。目前,当我必须格式化一些日期,根据任务,我使用Javascript date或date-fns是一个很好的替代Moment.js日期计算(添加或删除日期,等等…)

不要用这个:

import { Pipe, PipeTransform } from '@angular/core'
import * as moment from 'moment'

@Pipe({
   name: 'formatDate'
})
export class DatePipe implements PipeTransform {
   transform(date: any, args?: any): any {
     let d = new Date(date)
     return moment(d).format('DD/MM/YYYY')
      
   }
}

在视图中: {{date | formatDate}}

角:8.2.11

<td>{{ data.DateofBirth | date }}</td>

1973年6月9日

<td>{{ data.DateofBirth | date: 'dd/MM/yyyy' }}</td>

输出:09/06/1973

<td>{{ data.DateofBirth | date: 'dd/MM/yyyy hh:mm a' }}</td>

输出:09/06/1973上午12:00

您可以在这里找到有关日期管道的更多信息,例如格式。

如果您想在组件中使用它,可以简单地这样做

pipe = new DatePipe('en-US'); // Use your own locale

现在,你可以简单地使用它的变换方法

const now = Date.now();
const myFormattedDate = this.pipe.transform(now, 'short');