微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

DateTimeFormatter不在阿拉伯语或孟加拉语中使用本机数字

如何解决DateTimeFormatter不在阿拉伯语或孟加拉语中使用本机数字

我正在尝试使用DateTimeFormatter API在TextView显示特定时间,但是每当我将设备设置为阿拉伯语或孟加拉语时运行我的应用程序,时间总是似乎出于某种原因显示了西方数字。这是故意的,还是我需要解决此问题?

科特林

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val localizedTimeFormatter = DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT)

        val timeOpen = LocalTime.of(9,30)
        val timeClose = LocalTime.of(17,15)

        tv_time.text = (timeOpen.format(localizedTimeFormatter) +
                "\n\n" + timeClose.format(localizedTimeFormatter))
    }
}

时钟应用程序(阿拉伯语)

enter image description here

我的应用程序(阿拉伯语)

enter image description here

时钟应用程序(孟加拉)

enter image description here

我的应用程序(孟加拉)

enter image description here

解决方法

这是按设计的。除非另有明确指示,否则DateTimeFormatter的实例(甚至是本地化的实例)也使用Western / ASCII数字。当您知道如何时,说明并不难:

    DateTimeFormatter localizedTimeFormatter = DateTimeFormatter
            .ofLocalizedTime(FormatStyle.SHORT)
            .withDecimalStyle(DecimalStyle.ofDefaultLocale());
    
    LocalTime timeOpen = LocalTime.of(9,30);
    LocalTime timeClose = LocalTime.of(17,15);
    
    String text = timeOpen.format(localizedTimeFormatter)
            + '\n' + timeClose.format(localizedTimeFormatter);
    System.out.println(text);

孟加拉语区域(bn-BD)中的输出:

৯:৩০ AM
৫:১৫ PM

以及阿拉伯语(ar):

٩:٣٠ ص
٥:١٥ م

希望您可以自己翻译我的Java代码。我相信这应该不难。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。