Angular 将字符串转换为日期问题

Angular 将字符串转换为日期问题,angular,typescript,Angular,Typescript,我想为angular2创建一个管道,代码如下: @Pipe({name: 'stringToDate'}) export class StringToDatePipe implements PipeTransform { /** * Constructor */ constructor() { } /** * Transform a date that is passed as string into a date * @p

我想为angular2创建一个管道,代码如下:

@Pipe({name: 'stringToDate'})
export class StringToDatePipe implements PipeTransform {
    /**
     * Constructor
     */
    constructor() {
    }
    /**
     * Transform a date that is passed as string into a date
     * @param value The date passed as string
     * @returns {Date} The Date object
     */
    transform(value: string): Date {
        console.log(value);
        let d = new Date(value);
        console.log(d);
        return d;
    }
}
我不知道为什么它不能创建正确的日期。这是console打印的内容:

2016-01-01
Thu Dec 31 2015 21:00:00 GMT-0300
如何修复它?

可能的解决方案:

@Pipe({name: 'stringToDate'})
export class StringToDatePipe implements PipeTransform {
    /**
     * Constructor
     */
    constructor() {
    }
    /**
     * Transform a date that is passed as string into a date
     * @param value The date passed as string
     * @returns {Date} The Date object
     */
    transform(value: string): Date {
        let reggie = /(\d{4})-(\d{2})-(\d{2})/;
        let dateArray = reggie.exec(value);
        let dateObject = new Date(
            (+dateArray[1]),
            ((+dateArray[2])) - 1, // Careful, month starts at 0!
            (+dateArray[3])
        );
        return dateObject;
    }
}

日期对象与日期字符串不同看起来像一个dup发生的事情是,您将日期作为
yyyy-mm-dd
字符串,而
新日期(值)
将日期字符串转换为
date
对象。然后,当
日期
对象记录到控制台时,它将在当前时区中格式化。由于原始字符串未指定时区,
Date()
函数假定为GMT。因此,Date对象包含2016-01-01 GMT时间,并显示为GMT-03时间——这是您电脑的时区吗?是的,这是我电脑的时区。看看我的答案,这是一个好方法吗?