DevGang
Авторизоваться

Расширение Angular DatePipe для поддержки часовых поясов 

Недавно я исследовал, как лучше всего анализировать даты в часовом поясе пользователя на Angular V5.

Но кажется, что сокращения часовых поясов устарели, и вы можете использовать только параметр часового пояса с конвейером DatePipe, но на самом деле это просто номер смещения часового пояса, который подвержен неправильному анализу из-за перехода на летнее время.

(например, может быть разный номер смещения для одного и того же часового пояса в зависимости от времени года)

Поэтому я делюсь пользовательским pipe, который использует момент и часовой пояс для расширения DatePipe с возможностью поддержки сокращений часовых поясов («Europe/Prague» и т.д.).

Надеюсь, вы найдете это полезным, и наслаждайтесь правильным форматированием даты часового пояса :)

import { Pipe, PipeTransform } from '@angular/core';
import { DatePipe } from '@angular/common';
import * as moment from 'moment-timezone';

/**
* Канал текущего часового пояса для поддержки анализа на основе сокращений часового пояса
* охватывает все случаи изменения смещения из-за перехода на летнее время.
*
* Тот же API, что и у DatePipe с дополнительной поддержкой сокращений часовых поясов.
*/
@Pipe({
  name: 'momentDate'
})
export class MomentDatePipe extends DatePipe implements PipeTransform {
	transform(
  		value: string | Date,
  		format: string = 'mediumDate', 
  		timezone: string = 'Europe/Prague'
	): string {
  		const timezoneOffset = moment(value).tz(timezone).format('Z');
  		return super.transform(value, format, timezoneOffset);
	}
}

Источник:

#Angular
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу