【问题标题】:Intl not working for Android in React NativeIntl 在 React Native 中不适用于 Android
【发布时间】:2022-01-11 16:02:43
【问题描述】:

我正在获得像 202001 这样的价值。

我想像 January_2020 那样隐藏它。

有没有办法像这样转换?:

202001->January_2020

我尝试了以下一个。

const dateToStr = (input) => {
    if (input.length !== 6) {
      return "wrong date syntax, use YYYYMM";
    }
    const parts = input.match(/([0-9]{4})([0-9]{2})/);
    if (!parts) {
      return "wrong date syntax, use YYYYMM";
    }
    // NOTE: check syntax of parts
    const formatter = new Intl.DateTimeFormat("en-EN", { month: "long" })
      .format;
    const formatted = formatter(
      new Date(Date.UTC(parseInt(parts[1]), parseInt(parts[2]) - 1))
    );
    return `${formatted}_${parts[1]}`;
  };

在 ios 上可以正常工作,但在 android 上不行。

它显示如下错误:--

can't find variable:Intl

如何在不使用 android 和 ios 中的任何库的情况下在 Javascript 中获取此更新值?

【问题讨论】:

    标签: javascript android reactjs react-native


    【解决方案1】:

    无需使用Intl.DateTimeFormat。您可以简单地使用Date 类。

    const dateToStr = (input) => {
        if (input.length !== 6) {
          return "wrong date syntax, use YYYYMM";
        }
        const parts = input.match(/([0-9]{4})([0-9]{2})/);
        if (!parts) {
          return "wrong date syntax, use YYYYMM";
        }
        const monthNumber = Number(parts[2]);
        if (monthNumber < 1 || monthNumber > 12) {
            return "Wrong month number.";
        }
        const d = new Date();
        d.setMonth(monthNumber-1);
        const monthName = d.toLocaleString("en-EN", {month: "long"});
        return `${monthName}_${parts[1]}`;
      };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-18
      • 1970-01-01
      • 2020-03-25
      • 2017-06-08
      • 2021-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多