我有一个用例可以使时间更快,即我想将时钟更改一个因子(正整数)。因此,如果我将其更改为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/