乔达时间操纵
Joda time manipulation
我有一个让时间过得更快的用例,即我想按一个因子(正整数)更改时钟。所以,如果我将它更改为 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 doubleTime(Duration duration) {
return new Duration(duration.getMillis() * 2);
}
这更简单,因为 Duration 不知道它何时开始或结束。到底有多长。
记住时间从来都不是简单的。当你这样做时,一大堆微妙的事情都会被忽略。闰年、闰秒等。如果那是你想要的,那很好,但如果一年加倍并不能完全给你两年,请不要感到惊讶。
我有一个让时间过得更快的用例,即我想按一个因子(正整数)更改时钟。所以,如果我将它更改为 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 doubleTime(Duration duration) {
return new Duration(duration.getMillis() * 2);
}
这更简单,因为 Duration 不知道它何时开始或结束。到底有多长。
记住时间从来都不是简单的。当你这样做时,一大堆微妙的事情都会被忽略。闰年、闰秒等。如果那是你想要的,那很好,但如果一年加倍并不能完全给你两年,请不要感到惊讶。