Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 根据时区以角度设置日期格式_Angular_Angular Date Format - Fatal编程技术网

Angular 根据时区以角度设置日期格式

Angular 根据时区以角度设置日期格式,angular,angular-date-format,Angular,Angular Date Format,我正在从API接收UTC格式的日期。我需要使用用户的本地时区输出日期。每个用户都被分配了一个时区,我从不同的API中提取该时区 通过使用以下文档,我能够使用a+(即+100、+200等)在所有时区运行。然而,当我有一个时区时,(即-800)。这是行不通的 有效: {{element.myDate | date:'d-MMM-yyyy HH:mm' : '+800' }} {{element.myDate | date:'d-MMM-yyyy HH:mm' : '-800' }} 原始值:20

我正在从API接收UTC格式的日期。我需要使用用户的本地时区输出日期。每个用户都被分配了一个时区,我从不同的API中提取该时区

通过使用以下文档,我能够使用a+(即+100、+200等)在所有时区运行。然而,当我有一个时区时,(即-800)。这是行不通的

有效:

{{element.myDate | date:'d-MMM-yyyy HH:mm' : '+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' }}
{{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
  ) {}
}

由于日期在角度上被视为“本地”,因此可以首先将其转换为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()
));

请参阅以获取演示。

它可以正常工作。
DatePipe
的默认时区是您的本地时区,即西雅图的
GMT-8
-800
。@ConnorsFan感谢您的反馈,但我已经尝试过了,并且没有像上面提到的那样发生任何更改。我的观点是,您的两个示例都有效。时区
-800
不会被忽略。在第一个示例中,您可以看到
+800
将“原始值”增加16小时。因此,该原始值适用于时区
-800
。这就是为什么当您指定
-800
@ConnorsFan时,该值不会更改。我现在就知道了。当日期加载到浏览器上时,它假定它是我的本地时区,即使我在服务器上存储为UTC。因为你和我都在太平洋时间,所以我们使用-800时没有变化。然而,当我使用-1600时,我得到了我想要的结果。在短期内,这对我来说是可行的,但是有没有更好的方法来处理这个问题?您可以在视图中显示结果之前将日期转换为UTC,如中所示。我会张贴一个答案,如果这是你想要的。