在 angular 类型脚本中收到查询结果后将纪元时间转换为时间字符串

convert epoch time to time string upon receiving query result in angular type script

这是我面临的问题: 我有一个 angular 脚本来查询后端服务并获取查询结果以显示给用户。 查询响应中的字段之一是时间戳,当前是纪元时间,例如1637726700094

此时间戳将作为 table 列显示在 html 页面中,理想情况下我可以将其转换为 日期字符串。我设法通过使用 | 完成了这个转换日期。现在它显示为人类可读的日期字符串。

问题是,我还有一个过滤器允许用户 select 显示某些行。 理想情况下,用户可以键入例如2021 年 11 月 26 日 2:05:00 下午,过滤器将显示某些记录。但是它不起作用,因为过滤器仍然在纪元时间工作,纪元时间是 table 的数据源,而不是转换后的数据。

理想情况下,我可以解析数据源并创建一个包含数据字符串的新数据源,这样搜索就可以了。我可以搜索 11 月 26 日,或 2:05,或 2:05:00,所有这些都基于文本。

而不是

return this.http.get<data[]>(this.url, { params});

有没有办法处理 return 之前的数据[](将纪元时间戳转换为时间字符串)以显示脚本?


这是我在代码中使用的最终解决方案:

).subscribe(rawData => {
        const newData: NewData[] = rawData.map( (datum) =>
        {
            return {
                timeStamp: this.datePipe.transform(datum.timeStamp, 'yyyy MMM dd HH:mm:ss'),
                name: datum.name,
                status: this.showStatusStr(datum.status)
            };
        });
        this.newDataSource = new MatTableDataSource(newData);
        this.newDataSource.paginator = this.paginator;
        this.hcDataSource.sort = this.sort;
        console.log(newData);
        console.log(this.newDataSource);
    });

如果您将日期管道注入到您想要执行此操作的代码中, 您可以映射数组,并为每个值调用管道的 transform 方法,例如

const data: Data[] = this.response.map( (datum) => 
   { 
     return {
      date: this.datePipe.transform(datum.epoch),
      name: datum.name,
      status: dataum.status
     };
   }
);