gpt4 book ai didi

java - Joda 时间,以毫秒为单位的周期

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:14:41 29 4
gpt4 key购买 nike

我正在尝试使用“millis”构造函数设置我的 Period 对象,并相应地更新所有相关字段(年、月、周、日、小时、分钟、秒)

也就是使用下面的代码:

mPeriod = new Period(millis, PeriodType.standard());

没有相应地填写所有相关字段。只有几周和几分钟(对于 1325965615539 的输入毫秒)

有人可以帮我解决这个问题吗?

最佳答案

您可以使用 Period#normalizedStandard(); 对其进行标准化

但是,Period 无法“填写所有相关字段”,因为它无法对月或年中的天数做出假设。它最多只能将其转换为周、天和时间字段。

Javadoc 涉及到这一点,但不是很详细:

If the period contains years or months, then the months will be normalized to be between 0 and 11. The days field and below will be normalized as necessary, however this will not overflow into the months field. Thus a period of 1 year 15 months will normalize to 2 years 3 months. But a period of 1 month 40 days will remain as 1 month 40 days.

(强调我的)

如果您需要将其规范化为年和月,则需要使用这些字段中的值构造 Period

或者,您可以使用Duration:

  1. 构造一个 Duration以毫秒为单位
  2. 使用 Duration#toPeriodFrom(ReadableInstant)创建从给定时刻开始的 Period(例如,new DateTime())。根据文档,这应该有效:

    This conversion will determine the fields of a period accurately. The results are based on the instant millis, the chronology of the instant, the standard period type and the length of this duration.


这是 normalize() 应该对您的毫秒输入执行的操作:

import org.joda.time.Period;

class Normalize {
public static void main(String[] args) {
Period period = new Period(1325965615539L);
System.out.println(period);
System.out.println(period.normalizedStandard());
}
}

// outputs
PT368323H46M55.539S
P2192W2DT19H46M55.539S

请注意第二行已经被规范化,但最多只有几周。

关于java - Joda 时间,以毫秒为单位的周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8872664/

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