我有一个用例让时间变得更快,即我想用一个因子(正整数)来改变时钟。因此,如果我将其更改为2倍,则1秒将具有500毫秒,1分钟将具有30秒,依此类推。
我如何在jodatime中实现这一目标?
答案 0 :(得分:0)
从什么时候开始加倍?
例如,如果您使用
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 doubleTime(Duration duration) {
return new Duration(duration.getMillis() * 2);
}
这更简单,因为持续时间不知道它何时开始或结束。这是多长时间。
请记住,时间永远不会简单。当你做这样的事情时,一大堆微妙的东西会被忽略。闰年,闰秒等等。如果这就是你想要的那么好,但如果加倍一年并不能完美地给你两年,那就不要感到惊讶。