首页 > 解决方案 > 无法在 Angular 中重新格式化日期变量

问题描述

我有一个项目需要在这里获取 API 提要http://am-twitter-scrape.herokuapp.com/users/Twitter?pages_limit=3&wait=0

示例日期字符串:2:21 PM - 19 Jul 2019

我需要切断时间并重新格式化日期,如“月日,年”(例如 2019 年 1 月 5 日)。

我试图在字符串变量上运行 datePipe,如下所示:

<ng-container matColumnDef="date">
  <th mat-header-cell *matHeaderCellDef> Date </th>
  <!--<td mat-cell *matCellDef="let hashtags"> {{hashtags.date | date: 'longDate'}} </td>-->
  <td mat-cell *matCellDef="let hashtags"> {{hashtags.date}} </td>
</ng-container>

但它只是出现了一个错误说

InvalidPipeArgument:“无法将管道“DatePipe”的“2:21 PM - 2019 年 7 月 19 日”转换为日期

似乎日期的格式与包含的用于更改格式的 Angular 工具包不兼容。

我可能的选择是什么?我可以在 Angular 中使用正则表达式吗?

标签: angulartypescript

解决方案


是的,您可以在 Angular 中使用正则表达式。但是,更简单的解决方案可能是使用字符串操作。

在您的模板中,您可以使用:

<td mat-cell *matCellDef="let hashtags"> {{convertDate(hashtags.date)}} </td>
</ng-container>

然后convertDate在您的组件中创建函数:

convertDate(rawDate: string): string {
  const dateOnly = rawDate.split('-')[1].trim();
  const [day, month, year] = dateOnly.split(' ');
  return `${month} ${day}, ${year}`;
}

推荐阅读