我有一个用例可以使时间更快,即我想将时钟更改一个因子(正整数)。因此,如果我将其更改为2倍,则1秒将具有500毫秒,而1分钟将具有30秒,依此类推。

我如何在jodatime中实现这一目标?

最佳答案

从什么时候开始您要加倍时间?

例如,如果您使用

import org.joda.time;

Instant doubleTime(Instant instant) {
    return new Instant(instant.getMillis() * 2);
}


自1970年以来,您的时间翻了一番。

您可能想选择时间应该开始加倍。

Instant doubleTime(Instant start, Instant end) {
    Long s = start.getMillis();
    Long e = end.getMillis();

    return new Instant((e - s) * 2 + s);
}


这将使您将结束时间比开始时间增加一倍。

使用Duration可以更简单地完成相同的技巧:

Duration doubleTime(Duration duration) {
    return new Duration(duration.getMillis() * 2);
}


这很简单,因为Duration不知道何时开始或结束。多久了。

牢记时间从未如此简单。当您执行此类操作时,一堆细微的事情会被忽略。 years年,leap秒等。如果那是您想要的,那很好,但如果加倍一年不能完全给您两年,也不要惊讶。

关于java - Joda Time 操纵,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29448621/

10-10 17:01