在我们的项目中,我们在一个带有httpd的docker容器中部署了一个angular 5项目。在Windows10中的VsCode本地调试时,我们会看到使用正确的NL时区(GMT + 1)正确显示时间。在我们的Linux托管docker实例中部署时,我们将时间视为UTC(因为默认设置是Linux for Linux)。
我想强制时区为荷兰时区(CEST)。 有没有办法在不使用管道的情况下格式化Angular 2+中的Date实例?
我希望在Angular 2 +的视图中为每个Date实例注册一个时区。
答案 0 :(得分:0)
我通过使用自定义管道(我无法找到另一种方式)和Moment JS来修复它,并将其放置在我需要小时格式化的视图中。代码:
import { Pipe, PipeTransform } from '@angular/core';
import * as moment from 'moment';
@Pipe({name: 'dutchDateFormat'})
export class DutchDateFormat implements PipeTransform {
transform(input: Date | string, format: string) {
return this.convertToDutchDateFormat(input, format);
}
private convertToDutchDateFormat(inputDate: Date | string, format: string) : string {
let isString = typeof inputDate === 'string';
let date : Date;
if (true === isString) {
date = moment(inputDate as string).toDate();
} else {
date = inputDate as Date;
}
let localTimeString = date.toLocaleTimeString("nl-NL", { timeZone: 'Europe/Amsterdam'});
let localDateTime = moment(localTimeString, 'hh:mm:ss');
return moment(localDateTime).format(format);
}
}
在您的视图格式中,您希望:
| dutchDateFormat:'HH:mm'