gpt4 book ai didi

java - 我的 PeriodFormatter 没有按预期运行 - 我做错了什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:54:25 26 4
gpt4 key购买 nike

我在使用 Joda Time 的 PeriodFormatter 时遇到问题。我想要报告天数、小时数、分钟数和秒数,但我的尝试似乎需要数周时间。我应该采取哪些不同的做法?

import org.joda.time.DateTime;
import org.joda.time.Period;
import org.joda.time.format.PeriodFormatter;
import org.joda.time.format.PeriodFormatterBuilder;

public class Problems {

public static void main(String[] args) {

PeriodFormatter formatter = new PeriodFormatterBuilder()
.printZeroNever()
.appendDays()
.appendSuffix(" day", " days")
.appendSeparator(", ")
.appendHours()
.appendSuffix(" hour", " hours")
.appendSeparator(", ")
.appendMinutes()
.appendSuffix(" minute", " minutes")
.appendSeparator(", ")
.appendSeconds()
.appendSuffix(" second", " seconds")
.toFormatter();

DateTime now = new DateTime();
DateTime justUnderAWeekAgo = now.minusDays(7).plusMinutes(1);
DateTime justOverAWeekAgo = now.minusDays(7).minusMinutes(1);
System.out.println(now);
System.out.println(justUnderAWeekAgo);
System.out.println(justOverAWeekAgo);
// I am happy with the following:
System.out.println(
formatter.print(new Period(justUnderAWeekAgo, now)));
// But not with this (outputs "1 minute" but I want "7 days, 1 minute"):
System.out.println(
formatter.print(new Period(justOverAWeekAgo, now)));
}
}

编辑: 我想我能明白为什么这不起作用 - 即格式化程序只打印 Period 的各种值,并且由于 Periods 存储数周的值,我的数天的值问题周期确实是 0。但我仍然需要一个好的方法来做到这一点......

最佳答案

你的问题是你没有要求你的 PeriodFormatter 显示周数。

两种可能性:

解决方案 1:显示星期:

PeriodFormatter formatter = new PeriodFormatterBuilder()
.printZeroNever()
.appendWeeks()
.appendSuffix(" week", " weeks")
.appendSeparator(", ")
.appendDays()
.appendSuffix(" day", " days")
.appendSeparator(", ")
.appendHours()
.appendSuffix(" hour", " hours")
.appendSeparator(", ")
.appendMinutes()
.appendSuffix(" minute", " minutes")
.appendSeparator(", ")
.appendSeconds()
.appendSuffix(" second", " seconds")
.toFormatter();

您示例中的第二个输出将是:

1 week, 1 minute

解决方案 2:仅显示日期,因此您必须使用 PeriodType.yearMonthDayTime():

new Period(justUndeAWeekAgo, now, PeriodType.yearMonthDayTime());

使用第二种解决方案,您可以将 PeriodFormatter 保持原样。您示例中的第二个输出将是:

7 days, 1 minute

关于java - 我的 PeriodFormatter 没有按预期运行 - 我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2236213/

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