2017-02-25 1 views
0

에서 내가 좋아하는 것,이 방법이잘못된 날짜 시간 타이프

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"로 바꾸고 싶다. "let newFormattedDate : Date = new Date (formattedDate);" 하지만 잘못된 날짜로 표시됩니다. 이 문제를 해결하는 방법?

+0

기본값은 무엇입니까? APPLICATION_LOCALE .. ?? –

+0

@VivekSingh 로케일을 설정하기위한 것이며 기본 로케일을 en_US로 설정했습니다 – Protagonist

답변

1

코드를 기반으로 작성한 코드는 plnkr here이며 필요한 출력을 제공합니다. 개인 기능 수정

, DatePipe에 대한 추가 정보는 Angular docs를 참조하고

Examples here는 희망이 도움에 대한

private modifyDate(dateString: string): Date { 
    let d = new DatePipe('en-US'); 
    return d.transform(new DateIEPipe().transform(dateString),'short'); 
} 

.

+0

출력을 "23.01.2017 09:19"로 예상하지만 출력이 "월 Jan 23 2017 00:00:00 GMT + 0530 (인도 표준시) " – Protagonist

+0

plnkr을 업데이트했습니다 ... https : //plnkr.co/edit/9bD64nQ3n0KJWm5S8MiO? p = preview –