【问题标题】:How to pretty format a Period in Java 17? [duplicate]如何在 Java 17 中漂亮地格式化句点? [复制]
【发布时间】:2021-10-20 17:13:50
【问题描述】:

我想以人类可读的形式格式化一个时期(年龄),例如:

47 years, one month and 7 days。这里1 替换为one0 跳过喜欢 58 years and 7 days.

是否有现成的格式化程序来完成这样的任务? 我应该自己写以及如何正确地做到这一点? 我必须使用 Format 抽象类吗?

【问题讨论】:

  • DateTimeFormatterBuilder 是 Java 内置的,但不够灵活,不适合您使用。您可以扩展 DataTimeFormatter,但您仍然需要自己编写逻辑。
  • 检查此stackoverflow.com/questions/53749850/… 您只需对其进行少量修改即可删除任何 0 值
  • 我在发布我的问题之前阅读了提到的帖子。我想我必须编写自己的逻辑。我想知道如何以最佳方式做到这一点。
  • 我无法扩展public final class DateTimeFormatter
  • 我认为您需要从头开始。您不必使用任何特定的基类或接口。对于像这样“不合时宜”的要求(即以明显不一致的方式将数字拼写为单词),目前尚不清楚现有的 Java 格式化 API 是否会对您有所帮助。在这种情况下,“正确”将是主观的......并且无关紧要。

标签: java formatting format localdate period


【解决方案1】:

分享输入会有很大帮助。 你可以在这里准备一个 Map 和 String.format 方法来完成你的目标。 假设您已经有了计算月、日和年的逻辑。

        Map<Integer, String> map = new HashMap<>();
        map.put(1, "one");
        map.put(2, "two");
        map.put(3, "three");
        map.put(4, "four");
        map.put(5, "five");
        map.put(6, "six");
        map.put(7, "seven");
        map.put(8, "eight");
        map.put(9, "nine");
        map.put(10, "ten");
        map.put(11, "eleven");

String.format("%d 年, %s 月 %d 天", "存储年份的变量", "存储月份的变量", "存储天数的变量");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 2018-03-07
    • 2010-09-10
    • 1970-01-01
    • 2017-11-04
    • 2019-06-07
    • 2022-11-18
    相关资源
    最近更新 更多