【发布时间】:2021-03-06 02:43:55
【问题描述】:
我正在尝试根据语言环境更改日期格式。目前我的要求只有两个语言环境:
- zh-CN(英语)
- de-De(德语)
我尝试了一些东西,但我得到了这个错误:
错误错误:无法将“无效日期”转换为日期 角 2 转换 ... ...
这是模板:
<button (click)="apply()"></button>
这是我的逻辑:
primaryStartDateLabel: string;
primaryEndDateLabel: string;
secondaryStartDateLabel: string;
secondaryEndDateLabel: string;
parentLocale = "en-US";
apply() {
const primaryDateLabels = "01-01-2021,03-05-2021";
const secondaryDateLabels = "01-01-2020,03-05-20210";
this.extractDateLabels(primaryDateLabels, secondaryDateLabels);
}
extractDateLabels(primaryDateLabels, secondaryDateLabels) {
const primaryLabels = primaryDateLabels.split(",");
const secondaryLabels = secondaryDateLabels.split(",");
console.log("after split ", primaryLabels);
console.log("after split ", secondaryLabels);
this.primaryStartDateLabel = this.myFormatDate(primaryLabels[0]);
this.primaryStartDateLabel = this.transform(
this.primaryStartDateLabel,
this.parentLocale
);
this.primaryEndDateLabel = this.myFormatDate(primaryLabels[1]);
this.primaryEndDateLabel = this.transform(
this.primaryEndDateLabel,
this.parentLocale
);
this.secondaryStartDateLabel = this.myFormatDate(secondaryLabels[0]);
this.secondaryStartDateLabel = this.transform(
this.secondaryStartDateLabel,
this.parentLocale
);
this.secondaryEndDateLabel = this.myFormatDate(secondaryLabels[1]);
this.secondaryEndDateLabel = this.transform(
this.secondaryEndDateLabel,
this.parentLocale
);
}
transform(value: string, locale: string) {
console.log("looking_1 ", value, locale);
let format;
if (locale === "en-US") {
format = "MM-dd-y";
} else {
format = "mediumDate";
}
console.log("looking_1 ", format);
return formatDate(value, format, locale);
}
myFormatDate(value: string) {
const stringValue = new Date(
moment(value, "MM-DD-YYYY").format("YYYY-MM-DD")
);
return stringValue.toDateString();
}
当区域设置为 en-Us 时,日期应为:“03-23-2021”
但是当语言环境是 de-De 或其他时,日期应该是:“03.23.2021”
这是一个stackblitz(与时刻相关的错误)。
请帮助我实现我的目标。
P.S:由于某些限制,我不能从角度使用日期管道。我必须自己创建一些可定制的东西。
【问题讨论】:
标签: angular