将以双精度表示的小时数转换为持续时间

convert hours represented in double to duration

我将持续时间作为 Double 存储在数据库中,但在我对 LocalTime 的操作中,我需要它是 Duration 类型。 我需要能够从 double 更改为 duration,反之亦然。

我预计 3.5 小时的持续时间为 3 小时 30 分钟。

我假设你的持续时间是两倍? 然后你首先需要从中计算分钟数。 这可能是 长 durationInMinutes = durationFromDB * 60 或者,如果 0.5 是 "half an hour",您需要先计算小时数,然后再计算分钟数,然后将它们相加...所以 3.5h 是 180 分钟 + 30 分钟 = 210 分钟

然后你可以使用 java.time.Duration#ofMinutes(长分钟)并得到你需要的。

    // the Double value
    Double someTime = 3.5;

    // two ways of converting it to Duration
    // (we need to use minutes because Duration.of expects a long, which cannot be fractional
    Duration someDuration = Duration.ofMinutes((long) (someTime * 60));
    Duration someDuration2 = Duration.of((long) (someTime * 60), ChronoUnit.MINUTES);

    // convert the duration back to Double
    Double someTimeAgain = (double)someDuration.toMinutes() / 60;