gpt4 book ai didi

java - 在 Java 中解析持续时间的最简洁方法

转载 作者:行者123 更新时间:2023-11-30 07:46:45 25 4
gpt4 key购买 nike

scala.concurrent.duration 包提供了初始化持续时间的能力,如下所示:

Duration("5 minutes")

我无法在 Java 中找到一个等价的方法来让我轻松地完成同样的事情。有什么建议(除了使用 Java 中的 scala 之外?)

最佳答案

Java 本身不处理任何持续时间格式。您将需要像Joda-Time这样的第三方库或我的库 Time4J为了做你想做的事。

Joda-Time(基于构建器):

PeriodFormatter pf = 
new PeriodFormatterBuilder()
.appendMinutes()
.appendSuffix(" minute", " minutes")
.toFormatter();
Period p = pf.parsePeriod("5 minutes");
System.out.println(p); // PT5M

Time4J(基于模式):

Duration<ClockUnit> d = 
Duration.formatter(ClockUnit.class, "{m: :en:ONE=minute:OTHER=minutes}")
.parse("5 minutes");
System.out.println(d); // PT5M

但是,此类解决方案通常存在以下限制。

  • 此类过程通常仅适用于一种语言,因为文字是固定的。
  • 内部格式结构通常不灵活(输入可能包含意外的单元)。

我对存储一段时间的建议:

您最好使用 ISO-8601 格式进行存储,并使用用户定义的格式进行表示。这种方式与语言无关,并且可以灵活地处理多个单元。示例:

使用 ISO 的 Joda-Time:

Period joda = ISOPeriodFormat.standard().parsePeriod("PT5M");
System.out.println(PeriodFormat.wordBased(Locale.ENGLISH).print(joda));
// 5 minutes

使用 ISO 的 Time4J:

Duration<ClockUnit> time4j = Duration.parseClockPeriod("PT5M");
System.out.println(PrettyTime.of(Locale.ENGLISH).print(time4j));
// 5 minutes

关于java - 在 Java 中解析持续时间的最简洁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33817496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com