Intl 在 React Native 中不适用于 Android

Posted

技术标签:

【中文标题】Intl 在 React Native 中不适用于 Android【英文标题】:Intl not working for Android in React Native 【发布时间】: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 中获取此更新值?

【问题讨论】:

【参考方案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]`;
  ;

【讨论】:

以上是关于Intl 在 React Native 中不适用于 Android的主要内容,如果未能解决你的问题,请参考以下文章

@gorhom/react-native-bottom-sheet 不适用于 Android

React Native fetch 不适用于 redux?

console.log 不适用于 react-native

中继订阅不适用于 react-native

react-native-maps:animateToRegion 不适用于区域或初始区域?

React Native:图像 URI 不适用于发布 apk