gpt4 book ai didi

java - Joda-时间只需几分钟

转载 作者:行者123 更新时间:2023-12-02 03:34:03 30 4
gpt4 key购买 nike

有没有隐藏的方法来获得 Joda-Time以分钟为单位的时间段(或任何其他)

现在我做的是:

(period.getHours()*60 + period.getMinutes() + roundTwoDecimals((double)(period.getSeconds()/60)))
double roundTwoDecimals(double d) {
DecimalFormat twoDForm = new DecimalFormat("#.##");
return Double.valueOf(twoDForm.format(d));
}

但出于某种原因,我认为可能有一种更简单的方法。

编辑:我的时间将是最长小时数,而永远不会是几天。这是我第一次使用 Joda-Time。

最佳答案

由于Period是由各个组成字段定义的(例如5年、7周),因此如果不先将它们与特定时刻关联起来,就无法(轻松地)直接转​​换为分钟值及时。

例如,如果您有 2 个月的时间段,那么它包含多少分钟?为了知道这一点,您需要知道是哪两个月。也许:

  • 六月和七月? (30 + 31 = 61 天)
  • 七月和八月? (31 + 31 = 62 天)
  • 闰年的二月和三月? (29 + 31 = 60 天)

其中每一个都有不同的分钟数。

考虑到这一点,有几种方法可以解决这个问题。这里有一些:

  1. 如果您保证您的期间不会包含月份(或更长),则可以直接使用 toStandardSeconds() :

    Period period = new Period(60, 40, 20, 500);
    System.out.println(period.toStandardSeconds().getSeconds() / 60.0);

    // outputs 3640.3333333333335

    但是,如果您在 Period 中最终得到了月份值,您将得到(根据 javadoc)UnsupportedOperationException:

    java.lang.UnsupportedOperationException: Cannot convert to Seconds as this period contains months and months vary in length

  2. 否则,您可以将Period与某个时刻关联起来并使用 Duration :

    Period period = new Period(1, 6, 2, 2, 5, 4, 3, 100);

    // apply the period starting right now
    Duration duration = period.toDurationFrom(new DateTime());

    System.out.println(duration.toStandardSeconds().getSeconds() / 60.0);

    // outputs 810964.05 (when right now is "2012-01-09T13:36:43.880-06:00")

请注意,#2 将根据代码运行的日期打印不同的值。但这就是它的本质。

作为替代方案,您可以考虑从一开始就使用 Duration(如果可能),而根本不使用 Period

关于java - Joda-时间只需几分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8793475/

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