Angular 4 DatePipe с текущим часовым поясом

Поэтому у меня есть компонент, в котором мне нужно отображать даты, полученные от конечной точки, но я считаю, что эти даты хранятся в UTC. Поэтому я пытался использовать DatePipe для отображения даты в лучшем формате, но мне также нужен часовой пояс, соответствующий текущему часовому поясу текущего пользователя.

<span>{{data[col.field] | date: 'short'}}</span>

Я хочу быть в состоянии сделать что-то вроде этого:

<span>{{data[col.field] | date: 'short':new Date().getTimezoneOffset()}}</span>

но я считаю, что это невозможно, и я также думаю, Date.getTimezoneOffset() не дает мне правильный формат, так как DatePipe ожидает что-то вроде '+0900', Кто-нибудь сталкивался с чем-то подобным?

1 ответ

Решение

Вы можете использовать следующее:

Добавить в компонент

addZero(number, length){
    var str = "" + number
    while (str.length < length) {
        str = '0'+str
    }
    return str
}

readableTimeZone(offset) {
    return ((offset<0? '+':'-') + addZero(parseInt(Math.abs(offset/60)), 2) + addZero(Math.abs(offset%60), 2));
}

HTML

<span>{{data[col.field] | date: 'short':readableTimeZone(new Date().getTimezoneOffset())}}</span>

Другое решение

Составная часть

getFormattedTimeZone() {
  return new Date().toString().match(/([A-Z]+[\+-][0-9]+.*)/)[1].split(' (')[0].replace(/[A-Z]+/,'')
}

HTML

<span>{{data[col.field] | date: 'short':getFormattedTimeZone()}}</span>
Другие вопросы по тегам