Angular 4 个带有当前时区的 DatePipe

Angular 4 DatePipe with current timezone

所以我有一个组件,我需要在其中显示从端点接收到的日期,但我认为这些日期存储在 UTC 中。所以我一直在尝试使用 DatePipe 以更好的格式显示日期,但我还需要时区来匹配当前用户的时区。

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

我希望能够做这样的事情:

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

但我认为这是不可能的,而且我还认为 Date.getTimezoneOffset() 没有给我正确的格式,因为 DatePipe 需要类似 '+0900' 的格式。有人 运行 喜欢类似的东西吗?

您可以使用以下内容:

加入组件

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>