根据时区在Angular中格式化日期

时间:2019-02-01 02:21:36

标签: angular angular-date-format

我从我的API接收UTC格式的日期。我需要使用用户的本地时区输出日期。每个用户都分配了一个时区,我是从其他API中提取的。

使用以下文档,我可以使所有时区的+都适用(即+ 100,+ 200等)。但是,当我的时区带有-(即-800)时。这是行不通的。

作品:

{{element.myDate | date:'d-MMM-yyyy HH:mm' : '+800' }}

原始值:2019年1月7日00:46

新值:2019年1月7日16:46

不起作用(忽略时区):

{{element.myDate | date:'d-MMM-yyyy HH:mm' : '-800' }}

原始值:2019年1月7日00:46

新值:2019年1月7日00:46

调用API后使用的角度类

export class MyClass {
  constructor(
    public myDate: Date,
    public otherData: string
  ) {}
}

1 个答案:

答案 0 :(得分:1)

由于日期在Angular中被视为“本地”,因此您可以先将其转换为UTC,然后在视图中显示结果。以下转换方法假定元素类中存在myUtcDate属性:

this.myUtcDate = new Date(Date.UTC(
  this.myDate.getFullYear(),
  this.myDate.getMonth(),
  this.myDate.getDate(),
  this.myDate.getHours(),
  this.myDate.getMinutes(),
  this.myDate.getSeconds()
));
{{ element.myUtcDate | date:'d-MMM-yyyy HH:mm' : '-800' }}

有关演示,请参见this stackblitz