我需要使用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
。
答案 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。