【问题标题】:How to format LocalTime with time-of-day abbreviation depending on device locale?如何根据设备区域设置使用时间缩写格式化 LocalTime?
【发布时间】:2019-09-13 19:34:07
【问题描述】:

根据设备显示LocalTime 值的最佳方式是什么?美国是唯一一个专门使用 AM/PM 时间缩写的国家,但由于某种原因,当我的设备区域设置为美国时,该缩写不会出现。

美国

凌晨 2:30 / 下午 2:30

世界其他地方

02:30 / 14:30

当前代码

myTV.text = LocalTime.of(2, 30) + " " + LocalTime.of(14, 30)

当前结果

2:30 14:30

【问题讨论】:

  • @OleV.V.此答案仅显示我是否想一直使用 AM/PM,而我不想。

标签: kotlin java-8 localtime time-format


【解决方案1】:

您需要明确地格式化您的时间。使用DateTimeFormatter.ofLocalizedTime

    DateTimeFormatter localizedTimeFormatter
            = DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT);
    LocalTime begin = LocalTime.of(2, 30);
    LocalTime end = LocalTime.of(14, 30);

    String text = begin.format(localizedTimeFormatter) + ' ' + end.format(localizedTimeFormatter);
    System.out.println(text);

抱歉,我只能编写 Java 代码。当我在默认语言环境设置为 US 的桌面 Java 9 上运行代码时,输​​出为:

凌晨 2:30 下午 2:30

使用其他语言环境输出:

  • 加拿大:2:30 AM 2:30 PM
  • 英国或法国:02:30 14:30

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 2012-06-27
    • 1970-01-01
    相关资源
    最近更新 更多