使用泰语数字

时间:2017-09-03 20:49:09

标签: java datetime localization datetime-format

本练习来自Horstmann的书 Core Java for the greatient

  

编写一个程序,演示泰国[泰国数字]的日期和时间格式样式。

我尝试使用以下代码解决练习:

    Locale locale =  Locale.forLanguageTag("th-TH-TH");
    LocalDateTime dateTime = LocalDateTime.now();
    DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM);
    System.out.println(formatter.withLocale(locale).format(dateTime));

问题是虽然月份的名称是用泰语给出的(至少我是这么认为的,因为我不懂泰语),这些数字仍然用阿拉伯数字格式化,输出如下:

  

3ก。ย。 2017,22:42:16

我尝试了不同的语言标记("th-TH""th-TH-TH""th-TH-u-nu-thai")无济于事。我应该更改什么才能使程序按预期运行?我在Windows 10 64位上使用JDK 1.8.0_131。

1 个答案:

答案 0 :(得分:4)

DateTimeFormatter::withDecimalStyle

我能够解决这个问题。必须通过调用DecimalStyleDateTimeFormatter::withDecimalStyle传递给格式化程序,如下所示(请参阅粗体中的代码进行更改):


    Locale locale =  Locale.forLanguageTag("th-TH-u-nu-thai");
    LocalDateTime dateTime = LocalDateTime.now();
    DecimalStyle style = DecimalStyle.of(locale);
    DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM);            
    System.out.println(formatter.withLocale(locale).withDecimalStyle(style).format(dateTime));