使用typeScript转换日期对象属性的数组

时间:2019-09-24 11:42:56

标签: javascript angular typescript sorting datetime

我的数据数组具有一个日期字段,该字段当前无法被我试图创建的管道读取。因此,我试图将日期转换为到达管道之前的格式。我的组件构造函数中已经有一个按日期字段排序的过滤器。之后,我想将日期转换成这种格式,然后给我一个新的数组。

0: {dateTime: "2018-09-22T10:17:12.162Z", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam."}
1: {dateTime: "2019-09-08T10:17:12.162Z", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam."}
2: {dateTime: "2019-09-09T10:17:12.162Z", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam."}
3: {dateTime: "2019-09-10T10:17:12.162Z", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam."}
4: {dateTime: "2019-09-11T10:17:12.162Z", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam."}

上面是按日期顺序排序后的...我想要这样的东西:

0: {dateTime: "22-09-2018", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam."}
1: {dateTime: "21-09-2018", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam."}
2: {dateTime: "20-09-2018", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam."}
3: {dateTime: "19-09-2018", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam."}
4: {dateTime: "18-09-2018", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam."}

这是我的构造函数,您将在这里看到订单过滤器管道,此后,我尝试将新数组转换为一个新的数组供我使用。

  constructor(private contactLogService: ContactLogService, private orderPipe: OrderPipe, private datePipe: DatePipe) {
    this.sortedCollection = orderPipe.transform(this.contactLogService.contactLog, 'dateTime');
    this.formattedDateCollection = datePipe.transform(this.sortedCollection.dateTime, 'yyyy-dd-MM'); // new line
    console.log("contact log sorted", this.sortedCollection);
    console.log("Formatted Date", this.formattedDateCollection);
  }

使用上述.sateTime在“ any”类型上不存在-以下是我的小贴士

contactLog: any;
sortedCollection: any[] = [];
formattedDateCollection: any; //new

2 个答案:

答案 0 :(得分:1)

您可以尝试以下代码:

  this.formattedDateCollection = this.sortedCollection.map(x => {
      const y = Object.assign({}, x);
      y.dateTime = this.datePipe.transform(x.dateTime, "yyyy-dd-MM");
      return y;
    });

PS:如果您已经通过http调用来提取数据,则最好将逻辑从构造函数移至ngOnInit()。

答案 1 :(得分:1)

可以通过原始JavaScript完成:

fooFunction(keyVal) {
    const grades = [
        { dateTime: "2018-09-22T10:17:12.162Z", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam." }
        , { dateTime: "2019-09-08T10:17:12.162Z", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam." }
        , { dateTime: "2019-09-09T10:17:12.162Z", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam." }
        , { dateTime: "2019-09-10T10:17:12.162Z", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam." }
        , { dateTime: "2019-09-11T10:17:12.162Z" }
    ];

    let desiredData= grades.map(g => {
        return {
            dateTime: this.transformDate(g.dateTime),
            notes: g.notes
        };
    });
    console.log(desiredData);
}


transformDate(dateTime){
     return new Date(dateTime).toJSON().slice(0,10);
}