如何在不更改应用程序语言的情况下从英语将时间格式更改为孟加拉语?

时间:2019-07-09 17:50:03

标签: java android datetime-format

如何在不更改应用程序语言的情况下将时间格式从英语更改为孟加拉语?

3 个答案:

答案 0 :(得分:0)

获取日期格式程序时,使用Locale语言标签指定bn-IN

ULocale bangla = ULocale.forLanguageTag("bn-IN");
SimpleDateFormat timeFormat = SimpleDateFormat.getTimeInstance(DateFormat.LONG, bangla);

答案 1 :(得分:0)

从理论上讲这应该起作用:

    Locale bangla = Locale.forLanguageTag("bn-BD");
    DateTimeFormatter timeFormatter = DateTimeFormatter
            .ofLocalizedTime(FormatStyle.FULL)
            .withLocale(bangla);
    String formattedTime
            = ZonedDateTime.now(ZoneId.of("Asia/Dhaka")).format(timeFormatter);
    System.out.println(formattedTime);

但是我的桌面Java 7上的输出是:

  

BDT下午2:29:21

也就是说,我认为与英语没有什么不同。

在Java 9上,我确实有所不同:

  

10:32:00সময়সময়

我不敢说您在Android上获得的东西,但是您可以尝试。

您可以指定FormatStyle.FULL.SHORTMEDIUM而不是LONG,具体取决于所需格式的长度。

我正在使用ThreeTen Backport,它是Java.time(现代Java日期和时间API)向Java 6和7的反向移植。对于较旧的Android(在API级别26下),请使用相同的Android套件ThreeTenABP。请参阅底部的链接。

我使用孟加拉国(孟加拉语)使用的语言标签bn-BD来表示孟加拉语(孟加拉语)。如果您不想指定国家/地区,也可以单独尝试bn,也可以尝试使用bn-IN来表示印度的孟加拉语。可能有差异也可能没有差异。

链接

答案 2 :(得分:0)

这是Kotlin扩展功能。使用此功能,您可以将任何英文数字转换为Bangla。

fun String.englishNumberChangeToBanglaNumber(): String {
    val hash = HashMap<Int, String>()
    hash[0] = "০"
    hash[1] = "১"
    hash[2] = "২"
    hash[3] = "৩"
    hash[4] = "৪"
    hash[5] = "৫"
    hash[6] = "৬"
    hash[7] = "৭"
    hash[8] = "৮"
    hash[9] = "৯"
    var banglaDate = ""
    this.forEach {
        try {
            val digit = it.toString().toInt()
            banglaDate += hash[digit]
        } catch (e: Exception) {
            banglaDate += it
        }
    }
    return banglaDate

}

现在在Kotlin中使用这种方式,

"10/12/2020".fun String.englishNumberChangeToBanglaNumber()

输出:১০/১২/২০২০

确保您的字符串是英语。