有关 java 的 FormatStyle 有趣的地方

JAVA 8 开始对 time 添加了不少东西,最常见的就是 LocalDate 这样的东西,其实还是多了点其他好玩的东西,比如说 java.time.format.FormatStyle 这个类。下面的代码中让我们来用 Local(语言, 国家) 之后格式化时间看看输出内容都有些什么。

public class FormatStyleTest {
    public static void main(String[] args) {
        LocalDate ld = LocalDate.now();
        Arrays.asList(FormatStyle.FULL, FormatStyle.LONG, FormatStyle.MEDIUM, FormatStyle.SHORT)
              .forEach(formatStyle -> {
                  System.out.println(String.format("--- FormatStyle.%s ---",
                                                   formatStyle.toString()));
                  DateTimeFormatter dtf = DateTimeFormatter.ofLocalizedDate(formatStyle);
                  Arrays.asList(new String[]{"zh", "CN"},
                                new String[]{"zh", "HK"},
                                new String[]{"zh", "TW"},
                                new String[]{"en", "US"},
                                new String[]{"en", "UK"},
                                new String[]{"ja", "JP"})
                        .forEach(strs -> {
                            Locale locale = new Locale(strs[0], strs[1]);
                            System.out.println(String.format("%s %s -> %s",
                                                             strs[0],
                                                             strs[1],
                                                             ld.format(dtf.withLocale(locale))));
                        });
              });

    }
}
--- FormatStyle.FULL ---
zh CN -> 2018年7月23日 星期一
zh HK -> 2018年07月23日 星期一
zh TW -> 2018年7月23日 星期一
en US -> Monday, July 23, 2018
en UK -> Monday, July 23, 2018
ja JP -> 2018年7月23日
--- FormatStyle.LONG ---
zh CN -> 2018年7月23日
zh HK -> 2018年07月23日 星期一
zh TW -> 2018年7月23日
en US -> July 23, 2018
en UK -> July 23, 2018
ja JP -> 2018/07/23
--- FormatStyle.MEDIUM ---
zh CN -> 2018-7-23
zh HK -> 2018年7月23日
zh TW -> 2018/7/23
en US -> Jul 23, 2018
en UK -> Jul 23, 2018
ja JP -> 2018/07/23
--- FormatStyle.SHORT ---
zh CN -> 18-7-23
zh HK -> 18年7月23日
zh TW -> 2018/7/23
en US -> 7/23/18
en UK -> 7/23/18
ja JP -> 18/07/23

即使是华语圈,出来的结果基本来说都不一样的,而 en US 跟 en UK 都是一样的。

顺便说一句,java 中格式化时间还是有点麻烦。

via java.time.format.FormatStyle を確認

你可能感兴趣的:(有关 java 的 FormatStyle 有趣的地方)