Javascript错误/从UTC转换日期提取的日期时间不同
我有一个本地格式的日期,我将其更改为UTC格式。UTC之后,我想提取UTC中的日期和时间。但每当我试图提取时间或日期,它只考虑当地时间,为什么Javascript错误/从UTC转换日期提取的日期时间不同,javascript,angular,timezone,utc,Javascript,Angular,Timezone,Utc,我有一个本地格式的日期,我将其更改为UTC格式。UTC之后,我想提取UTC中的日期和时间。但每当我试图提取时间或日期,它只考虑当地时间,为什么 this.utcDate = this.datePipe.transform(this.onceDate,'medium'); console.log('+=timezonenene=+', this.utcDate); this.utcDateStr = new Date(this.utcD
this.utcDate = this.datePipe.transform(this.onceDate,'medium');
console.log('+=timezonenene=+', this.utcDate);
this.utcDateStr = new Date(this.utcDate).toUTCString();
console.log('++ date is ++', this.utcDateStr);
this.utcDateStr = new Date(this.utcDateStr).toISOString();
console.log('++ date is ++', this.utcDateStr);
this.showDate = this.datePipe.transform(this.utcDateStr, 'yyyy-MM-dd');
this.showTime = this.datePipe.transform(this.utcDateStr, 'HH:mm');
console.log('+=time date zonenene date str =+', this.showDate);
console.log('+=timezonenene date str=+', this.showTime);
输出:
+=timezonenene=+ Apr 7, 2020, 5:41:16 PM
++ date is ++ Tue, 07 Apr 2020 12:11:16 GMT
++ date is ++ 2020-04-07T12:11:16.000Z
+=time date zonenene date str =+ 2020-04-07
+=timezonenene date str=+ 17:41
我希望最后记录的时间是:12:11而不是17:41(尽管您直接调用了
transform
函数),但您的问题似乎是关于的
从有关时区的文档中
参数:
未提供时,使用最终用户的本地系统时区
因此,要获得UTC输出,您可以在每次调用datePipe.transform
时,在format参数之后更改代码以提供时区参数'UTC'
另外,我会重新考虑为什么要生成字符串只是为了再次解析它们。通常这是不必要的,并且可能导致错误。如果
this.onceDate
是一个Date
对象,您应该能够在整个代码中使用它,而不是创建this.utcDateStr
来再次解析和转换它。(虽然很难从您的代码中判断是否是这种情况。将来,请提供a。)当然可以,如果我们可以直接获得utc时间,则无需将其转换为utc字符串,谢谢。