不使用MomentJS将日期转换为不同的时区

时间:2019-12-30 04:52:35

标签: javascript momentjs moment-timezone

我有一个正在处理大量数据的应用程序,我可以在Chrome的探查器中看到DeduceImpl在处理大型数据集时正在消耗大量CPU。我知道它在此方面是众所周知的,但是我不知道如何使用本地BindImpl对象格式化时区。可以实现吗?

对于它的价值,我编写的超级昂贵的函数是这样的:

 import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent implements OnInit {
  name = 'Angular 6';
  text1 = 'test count';
  changeCounter = 1;
  ngOnInit() { this.didModify(); }

  didModify() {
    this.changeCounter = this.changeCounter + 1;
    return this.changeCounter;
  }
}

我们的API使用墨尔本时间,因此只是将其转换为用户的时间。

2 个答案:

答案 0 :(得分:0)

我认为您应该尝试date-fns

  

Momentjs的所有功能均作为成员函数。因此,即使您只需要“添加”功能,也必须导入所有功能。创建实例后,将包含所有功能。   date-fns除以功能级别。因此,您只能导入和使用所需的内容。

  由于这个原因,由于构建在Web应用程序上,因此momentjs的大小通常大于date-fns。(无抖动)-more

答案 1 :(得分:0)

您可以按以下方式优化功能

const userTimezone = moment.tz.guess();
export const formatByTimeZone = date => {
    const returnValue = moment(date, 'Australia/Melbourne').tz(userTimezone);
    return returnValue;
}
  1. 一次获取并设置变量中的userTimezone,而不是每次格式化时都这样做

  2. 格式化后不必每次都更改默认时区