Angular 2+中的一个时区没有管道

时间:2018-01-09 14:17:57

标签: angular

在我们的项目中,我们在一个带有httpd的docker容器中部署了一个angular 5项目。在Windows10中的VsCode本地调试时,我们会看到使用正确的NL时区(GMT + 1)正确显示时间。在我们的Linux托管docker实例中部署时,我们将时间视为UTC(因为默认设置是Linux for Linux)。

我想强制时区为荷兰时区(CEST)。 有没有办法在不使用管道的情况下格式化Angular 2+中的Date实例?

我希望在Angular 2 +的视图中为每个Date实例注册一个时区。

1 个答案:

答案 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'