Joda时间操纵

时间:2015-04-04 16:14:51

标签: java jodatime

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

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

1 个答案:

答案 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);
}   

这更简单,因为持续时间不知道它何时开始或结束。这是多长时间。

请记住,时间永远不会简单。当你做这样的事情时,一大堆微妙的东西会被忽略。闰年,闰秒等等。如果这就是你想要的那么好,但如果加倍一年并不能完美地给你两年,那就不要感到惊讶。