java.time - Duration, Period, ChronoUnit
Klasa Duration służy do operowania na zmiennych typu czasowego (od nanosekund do dni).
Klasa Period służy do operowania na zmiennych typu data (dni, miesiące, lata)
Przykład użycia klasy Duration do wykonywania kolejnych kroków czasowych. W tym przypadku ustalamy, że jeden krok trwa jedną godzinę. Dzięki zastosowaniu klasy Duration możemy dowolnie dodawać, odejmować i obliczać długości czasowych odstępów między wartościami czasu. Automatycznie możemy przeliczać np. sekundy, minuty, godziny na dni. Zmienna typu Duration może przyjmować wartości ujemne.
import java.time.Duration;
class DurationTest {
private static Duration wildParkDuration = Duration.ZERO; // czas istnienia bieżącego parku (liczony od pierwszego kroku)
private static Duration wildParkTimeStepDuration = Duration.ofHours(1);
private static Duration testDuration = Duration.ofDays(365000); // 1 year == ok. 365 dni - 1000 lat == ok. 365000 dni.
public static void makeWildParkTimeStep() {
wildParkDuration = wildParkDuration.plus( wildParkTimeStepDuration );
}
public static void main( String... a ) {
System.out.println( wildParkDuration.toHours() );
makeWildParkTimeStep();
System.out.println( wildParkDuration.toHours() );
wildParkDuration = wildParkDuration.minus( testDuration ); // wildParkDuration will be negative
makeWildParkTimeStep();
System.out.println( wildParkDuration.toHours() );
makeWildParkTimeStep();
System.out.println( wildParkDuration.toHours() );
}
}
// Result:
//
// 0
// 1
// -8759998
// -9759997