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>