一尘不染

Java 句点到字符串

java

我在Java中使用Joda-Time库。我在尝试将Period对象转换为“ x天,x小时,x分钟”格式的字符串时遇到了一些困难。

这些Period对象首先通过向它们添加一定数量的秒来创建(它们以秒为单位序列化为XML,然后从它们重新创建)。如果仅在其中使用getHours()等方法,则得到的全部为零,并且使用getSeconds 的总秒数。

如何让Joda计算相应字段(例如天,小时等)中的秒数?


阅读 360

收藏
2020-03-19

共1个答案

一尘不染

你需要对周期进行归一化,因为如果用总秒数构造周期,则这是它唯一的值。对其进行归一化会将其分解为天,分钟,秒等的总数。

通过ripper234编辑 -添加TL; DR版本:PeriodFormat.getDefault().print(period)

例如:

public static void main(String[] args) {
  PeriodFormatter daysHoursMinutes = new PeriodFormatterBuilder()
    .appendDays()
    .appendSuffix(" day", " days")
    .appendSeparator(" and ")
    .appendMinutes()
    .appendSuffix(" minute", " minutes")
    .appendSeparator(" and ")
    .appendSeconds()
    .appendSuffix(" second", " seconds")
    .toFormatter();

  Period period = new Period(72, 24, 12, 0);

  System.out.println(daysHoursMinutes.print(period));
  System.out.println(daysHoursMinutes.print(period.normalizedStandard()));
}

将打印:

24 minutes and 12 seconds
3 days and 24 minutes and 12 seconds

因此,你可以看到非标准化期间的输出仅忽略了小时数(它没有将72小时转换为3天)。

2020-03-19