我试图连接两个日期并分配给变量,但它抛出了一个错误 错误错误:InvalidPipeArgument:“无法将“12-01-2020 - 13-02-2020”转换为管道“DatePipe”的日期。我哪里出错了?
我从后端获取的日期是 projectStartDate: "2020-12-21T13:55:00.000+00:00". 我将其转换为 12-01-2020 / 时间戳,然后将两者连接并分配给 projectduration 值.
this.startDate = this.datepipe.transform(response.projectStartDate, 'yyyy-MM-dd','es-ES');
this.endDate = this.datepipe.transform(response.projectEndDate, 'yyyy-MM-dd','es-ES');
response.gbRFEbean.projectDuration.value = this.startDate + "-" +this.endDate ;
答案 0 :(得分:0)
locale 是 DatePipe 转换的第四个参数,timezone 是第三个参数。目前,您将语言环境作为第三个参数。我可能会像这样配置您的语言环境(并且日期管道将自动适用于您的语言环境而无需指定):
Missing locale data for the locale "XXX" with angular
transform 采用 javascript 日期或 ISO 日期字符串,所以我猜您的日期(projectStartDate、projectEndDate)是不是 ISO 格式的字符串?该错误消息暗示这些字段之一具有 12-01-2020 - 13-02-2020
的完整值带有 ISO 日期字符串的示例代码
startDate = '2020-01-12';
endDate = '2020-02-13';
formattedStartDate = this.datePipe.transform(this.startDate);
formattedEndDate = this.datePipe.transform(this.endDate);
constructor(private datePipe: DatePipe) {
console.log(`${this.formattedStartDate} - ${this.formattedEndDate}`);
}
带有 javascript 日期的示例代码
startDate = new Date('2020-01-12');
endDate = new Date('2020-02-13');
formattedStartDate = this.datePipe.transform(this.startDate, 'yyyy-MM-dd');
formattedEndDate = this.datePipe.transform(this.endDate, 'yyyy-MM-dd');
constructor(private datePipe: DatePipe) {
console.log(`${this.formattedStartDate} - ${this.formattedEndDate}`);
}
如果您的日期是 dd-MM-yyyy 格式的字符串,您可以使用像 luxon 这样的库来解析它们:
npm i luxon
并导入
import { DateTime } from 'luxon';
并解析
startDate = DateTime.fromFormat("12-01-2020", "dd-MM-yyyy").toISODate();
最后一点,将日期放在 ISO 日期格式 (yyyy-MM-dd) 中,然后将它们格式化为相同的格式,这有点有趣。如果您想使用诸如 mediumDate(默认值)之类的可能显示 12 ene 的格式,管道更有意义,尤其是在您设置了应用程序区域设置的情况下。 2020
答案 1 :(得分:0)
日期格式:DD-MM-YYYY 无效。
您可以尝试使用:
new Date("12-01-2020")
它将在 Chrome 开发工具中提供 Invalid Date
。
解决方案
您可以将日期格式更改为MM-DD-YYYY,然后将其传递给datepipe.transform
let date = response.projectStartDate.replace(/(\d{2})-(\d{2})-(\d{4})/, "$2-$1-$3")
this.startDate = this.datepipe.transform(date, 'yyyy-MM-dd','es-ES');
date = response.projectEndDate.replace(/(\d{2})-(\d{2})-(\d{4})/, "$2-$1-$3")
this.endDate = this.datepipe.transform(date , 'yyyy-MM-dd','es-ES');