打字稿

时间:2017-02-25 15:04:09

标签: angular datetime typescript

我有一个修改日期的方法

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);”但我把它作为无效日期。如何解决这个问题?

1 个答案:

答案 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 docsExamples here

希望它有所帮助。