在没有 MomentJS 的情况下将日期转换为不同的时区



我有一个数据量很大的应用程序,我可以在Chrome的分析器中看到,moment在处理大型数据集时正在消耗大量的CPU。我知道它因此而闻名,但我不知道如何使用本机Date对象格式化时区。是否可实现?

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

export const formatByTimeZone = date => {
const userTimezone = moment.tz.guess()
moment.tz.setDefault('Australia/Melbourne')
const returnValue = moment(date).tz(userTimezone)
moment.tz.setDefault()
return returnValue
}

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

我认为你应该尝试date-fns

Momentjs 的所有功能都是成员函数。因此,即使您只需要"添加"功能,您也必须导入所有功能。创建实例后,将包含所有函数。 date-fns 按函数级别划分。因此,您可以仅导入和使用所需的内容。

由于这个原因,在Web应用程序上构建的结果,通常momentJS比date-fns具有更大的大小。(无树晃动( - 更多

您可以按如下方式优化函数

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

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

最新更新