我有一个修改日期的方法
private modifyDate(dateString: string): Date {
let formattedDate= new DatePipe(Defaults.APPLICATION_LOCALE).transform(new DateIEPipe().transform(dateString), 'shortDate');
let newFormattedDate: Date = new Date(formattedDate);
return newFormattedDate;
}
此方法的输入将类似于“2017-01-23T14:09:19 + 0100”,即字符串
我正在使用管道格式化字符串以获得时区。
@Pipe({
name: 'dateIE'
})
export class DateIEPipe implements PipeTransform {
transform(input:String): any {
if(input.trim() == "") return input;
// Check if timezone present in the date string?
let splits = input.split("+");
let formattedTZ = "";
if(splits.length > 1) {
formattedTZ = splits[1].substr(0, 2).concat(":").concat(splits[1].substr(2));
return splits[0].concat("+").concat(formattedTZ);
} else {
return input;
}
}
}
此管道将返回日期字符串,如23.01.2017 09:19。现在我想将其转换为Date,所以我正在尝试“让newFormattedDate:Date = new Date(formattedDate);”但我把它作为无效日期。如何解决这个问题?
答案 0 :(得分:1)
根据您的代码,我创建了一个plnkr here,它正在为我提供所需的输出。
修改了您的私人功能
private modifyDate(dateString: string): Date {
let d = new DatePipe('en-US');
return d.transform(new DateIEPipe().transform(dateString),'short');
}
有关DatePipe的更多信息,请参阅Angular docs和Examples here
希望它有所帮助。