【问题标题】:Angular 4 | how to format date using pipe?角 4 |如何使用管道格式化日期?
【发布时间】:2017-11-14 02:43:54
【问题描述】:

早安,

如何使用 Angular 管道格式化我的日期?我遇到了麻烦,因为它总是返回错误的日期。

下面是我如何格式化我的日期。

实际值 20170901

<span>{{apidata.DeliveryDate | date: 'yyyy-MM-dd'}}</span>

它返回 (1970-01-01)

我该如何解决这个问题?

【问题讨论】:

标签: angular pipe


【解决方案1】:

DatePipe 转换Date 对象或保存在 ISO 字符串中的日期。您要格式化的是一个数字(这是一个真正的后端设计问题)...您可以将日期转换为实际格式,例如通过使用moment 库:

apidata.deliveryDate = moment(apidata.DeliveryDate, 'YYYYMMDD').toISOString();

然后它就会起作用。您还可以创建自定义管道,为您转换和格式化“日期”。组件内解决方案示例代码:

// regular imports
import * as moment from 'moment';

@Component({
  template: `<span>{{apidata.deliveryDate | date: 'yyyy-MM-dd'}}</span>`
})
export class SomeComponent {
  apidata: any;

  constructor(someService: SomeService) { // <-- this is a service you get your data from
    this.someService.getApiData().subscribe((apidata) => {
      this.apidata = apidata;
      this.apidata.deliveryDate = moment(apidata.DeliveryDate, 'YYYYMMDD').toISOString();
    } 
  }
}

【讨论】:

  • 你能给我举个例子吗?我只是 Angular 2 中的新手。我如何将它应用到我的组件上?
  • 给你... 将来,如果您希望答案中有示例代码,请考虑在问题中添加示例代码;)
  • 谢谢人,嘿嘿嘿下次:) 我也可以用这个创建自定义管道吗?因为 moment.js 对于像这样的小转换来说真的很消耗数据。
  • 当然可以,不使用任何库会非常有挑战性,祝你好运!
  • @JydonMah 您只需将日期转换为YYYY-MM-DD 字符串,然后使用new Date('2017-09-01') 创建一个新日期,而不使用任何臃肿的库
猜你喜欢
  • 1970-01-01
  • 2019-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-15
相关资源
最近更新 更多