gpt4 book ai didi

java - 以天、时、分、秒显示期间

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

我有以下期间 1month 5d 22h 35m 39s,我想将其格式化为 35d 22h 35m 39s。但是,当使用以下格式化程序时,月份会被删除,而不会添加到日期中:

PeriodFormatter formatter = new PeriodFormatterBuilder()
.printZeroAlways()
.appendDays().appendSuffix(" d ")
.appendHours().appendSuffix(" h ")
.appendMinutes().appendSuffix(" m ")
.appendSeconds().appendSuffix(" s ")
.toFormatter();

经过一些搜索,我发现应该在 Period 上使用 normalizedStandard() 方法,但是当它与 period.normalizedStandard(PeriodType.dayTime()) 一起使用时,我收到以下错误:

java.lang.UnsupportedOperationException: Field is not supported
at org.joda.time.PeriodType.setIndexedField(PeriodType.java:690)
at org.joda.time.Period.withMonths(Period.java:851)
at org.joda.time.Period.normalizedStandard(Period.java:1541)
at amadeus.bid.wicket.markup.html.CountDownLabel.onComponentTagBody(CountDownLabel.java:34)

有什么想法吗?

最佳答案

就像 Elijah Cornell 悲伤的那样,一般由于月份的长度不同,将月份转换为日子是没有意义的。

然而,可以想象一个应用程序,在该应用程序中,将周期加到特定开始 DateTime(例如当前时间),计算从开始到结果的 Duration 并将持续时间转换为一段 PeriodType.dayTime():

// 1 month 5d 22h 35m 39s
Period period = new Period(0, 1, 0, 5, 22, 35, 39, 0);

Instant start = new Instant();
// current time => 2011-03-17T22:24:01.848+01:00
Duration dura = new Duration(start, start.toDateTime().plus(period));
Period period2 = new Period(dura).normalizedStandard(PeriodType.dayTime());
// => 36d 21h 35m 39s

虽然结果取决于开始时间、时区、超过夏令时边界等,但此时不提供所需的 35d 22h 35m 39s36d 21h 35m 39s 在我看来这是否有意义,因为它是 Period 的一般用例加上 DateTime 以产生新的 DateTime

关于java - 以天、时、分、秒显示期间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4144987/

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