Как я могу изменить формат времени на Bangla с английского без изменения языка приложения? - PullRequest
0 голосов
/ 09 июля 2019

Как я могу изменить формат времени на Bangla с английского без изменения языка приложения?

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Теоретически это должно работать:

    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:

02:29: 21 вечера БДТ

То есть я не вижу отличий от английского.

На Java 9 я получаю разницу:

10: 32: 00 101 বাংলাদেশ মানক সময়

Что вы получаете на Android Я не смею рассказать, но вы можете попробовать.

Вместо FormatStyle.FULL вы можете указать .SHORT, MEDIUM или LONG в зависимости от длины требуемого формата.

Я использую ThreeTen Backport, бэкпорт java.time, современного Java-API для даты и времени, для Java 6 и 7. Для более старых Android (в соответствии с уровнем API 26) используйте Android-адаптацию ThreeTenABP. Смотрите ссылки внизу.

Я использую языковой тег bn-BD для бангла (бенгальский), как говорят в Бангладеш. Вы также можете попробовать bn в одиночку, если вы не хотите указывать страну, или bn-IN для бангла, как говорят в Индии. Это может или не может иметь значение.

Ссылки

0 голосов
/ 09 июля 2019

Укажите Locale, используя языковой тег bn-IN при получении средства форматирования даты.

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