不支持dayjs时区

问题描述 投票:0回答:1

我正在尝试在我的react-native项目中将Timezone与dayjs一起使用,如文档中所述 我需要导入 utc 和时区插件。

import tz from 'dayjs/plugin/timezone';
import utc from 'dayjs/plugin/utc';


dayjs.extend(utc);
dayjs.extend(tz);

但实际上当我开始使用它时,它给我一个错误时区不支持

 console.log( dayjs('2013-11-18 11:55').tz('America/Toronto'), 'timezone');

下面的错误来自我在项目中使用的 Intl 包

screenshot of error

我尝试更新dayjs包,intl-react包和intl包本身,无法找到任何解决方案来解决这个问题,我仍然不明白这里缺少什么?

react-native dayjs
1个回答
0
投票

正如作者

sohcah
自己所说,这远非理想。但是,如果您只想将日期对象转换为它们在react-native中的时区,您可以添加这个polyfill并将其导入根目录。 原帖

// @ts-ignore
Date.prototype._toLocaleString = Date.prototype.toLocaleString
// @ts-ignore
Date.prototype.toLocaleString = function (a, b) {
  if (b && Object.keys(b).length === 1 && 'timeZone' in b && a === 'en-US') {
    return Intl.DateTimeFormat('en-us', {
      year: 'numeric',
      month: '2-digit',
      day: '2-digit',
      hour: '2-digit',
      minute: '2-digit',
      second: '2-digit',
      hour12: false,
      timeZone: b.timeZone,
    })
      .format(this)
      .replace(/(\d{2})\/(\d{2})\/(\d{4}),/g, '$3-$1-$2')
  }
  // @ts-ignore
  return this._toLocaleString(a, b)
}

这让我可以在 React Native 中做

dayjs().tz(timezone)
。如果它仍然没有按预期工作,您可以尝试从这里提到添加@formatjs polyfills。

© www.soinside.com 2019 - 2024. All rights reserved.