日期管道角度4自定义格式与时区(短)

时间:2017-07-06 19:04:29

标签: angular datetime date-pipe

我需要使用timezone(短格式)打印时间戳自定义格式:

{{ '2017-06-29 09:55:01.956-0400' | date:'MMM dd, y hh:mm a' }}

输出:

  

2017年6月29日下午07:25

但我需要附加时区,例如:

  

2017年6月29日下午07:25 IST

Angular为'z''Z'提供了时区选项,但没有给出预期结果:

'MMM dd, y hh:mm a  z' ==> Jun 29, 2017 07:25 PM India Standard Time
'MMM dd, y hh:mm a  Z' ==> Jun 29, 2017 07:25 PM GMT+5:30

我想要Jul 7, 2017, 12:27:01 AM IST

1 个答案:

答案 0 :(得分:4)

DatePipe使用Intl格式化日期。因此,它取决于您的网站开放的系统,以决定应返回当前时区的格式。为了达到所需的行为,我建议您创建一个自定义DatePipe,它将返回所需的timezoe缩写。例如:

import { Pipe } from "@angular/core";
import { DatePipe } from "@angular/common";

@Pipe({
    name: "myDate",
    pure: true
})
export class MyDatePipe extends DatePipe {
    transform(value: any, pattern: string = "mediumDate"): string|null {
        let result = super.transform(value, pattern);
        result += " " + this.map[Intl.DateTimeFormat().resolvedOptions().timeZone];
        return result;
    }
    map = {
        "Asia/Calcutta": "IST"
    };
}

但是,您需要将每个可能的时区添加到map对象。请参阅说明此方法的Plunker sample