Útmutató a Java Clock osztályhoz

1. Áttekintés

Ebben az oktatóanyagban fogunk nézz be a Java-ba Óra osztály a java.time csomag. Megmagyarázzuk, mi a Óra osztály az, és hogyan tudjuk használni.

2. A Óra Osztály

Óra hozzáadódott a Java 8-hoz, és az elérhető pillanatnyi hozzáférést biztosítja a rendelkezésre álló legjobb rendszeróra használatával, és időszolgáltatóként kell használni, amelyet tesztelési célokra hatékonyan el lehet nyomni.

Az aktuális dátum és idő az időzónától függ, és a globalizált alkalmazásokhoz időszolgáltató szükséges annak biztosításához, hogy a dátum és az idő a megfelelő időzónával legyen létrehozva.

Ez az osztály segít tesztelni, hogy a kódváltásaink különböző időzónákkal működnek-e, vagy - fix óra használata esetén - ez az idő nem befolyásolja a kódunkat.

A Óra osztály absztrakt, ezért nem hozhatunk létre belőle példányt. A következő gyári módszerek használhatók:

  • eltolás (óra, időtartam) olyan órát ad vissza, amelyet a megadott ellensúlyoz Időtartam. Ennek fő felhasználási esete a futás szimulálása a jövőben vagy a múltban
  • systemUTC () - az UTC időzónát képviselő órát adja vissza
  • fix (azonnali, ZoneId) - mindig ugyanazt adja vissza Azonnali. Ennek vezető felhasználási esete a tesztelés, ahol a rögzített óra biztosítja, hogy a tesztek ne függjenek az aktuális órától

Megvizsgáljuk a legtöbb elérhető módszert Óra osztály.

2.1. azonnali()

Ez a módszer az óra által definiált pillanatnyi értéket adja vissza:

Óraóra = Clock.systemDefaultZone (); Azonnali = óra.instant (); System.out.println (azonnali);

gyárt:

2018-04-07T03: 59: 35.555Z

2.2. systemUTC ()

Ez a módszer a Óra objektum, amely az aktuális pillanatot képviseli az UTC zónában:

Óraóra = Clock.systemUTC (); System.out.println ("UTC idő ::" + óra.instant ());

gyárt:

UTC-idő: 2018-04-04T17: 40: 12.353Z

2.3. rendszer()

Ez a statikus módszer a Óra objektum a megadott időzóna azonosítóval azonosított időzóna számára:

Óraóra = Óra.rendszer (ZoneId.of ("Ázsia / Kalkutta")); System.out.println (clock.instant ());

gyárt:

2018-04-04T18: 00: 31.376Z

2.4. systemDefaultZone ()

Ez a statikus módszer a Óra az aktuális pillanatot ábrázoló objektum, amely a rendszer alapértelmezett időzónáját használja:

Óraóra = Clock.systemDefaultZone (); System.out.println (óra);

A fenti sorok a következő eredményt adják (feltételezve, hogy alapértelmezett időzónánk „Ázsia / Kalkutta”):

SystemClock [Ázsia / Kalkutta]

Ugyanazt a viselkedést érhetjük el passzolással ZoneId.systemDefault ():

Óraóra = Óra.rendszer (ZoneId.systemDefault ());

2.5. millisz ()

Ez a módszer milliszekundumban adja vissza az óra aktuális pillanatát. Ez biztosított engedélyezni az óra használatát olyan nagy teljesítményű felhasználási esetekben, amikor egy objektum létrehozása elfogadhatatlan. Ez a módszer olyan helyeken alkalmazható, ahol egyébként használtuk volna System.currentTimeInMillis ():

Óraóra = Clock.systemDefaultZone (); System.out.println (clock.millis ());

gyárt:

1523104441258

2.6. eltolás ()

Ez a statikus módszer egy pillanatot ad vissza a megadott alapóráról, hozzáadva a megadott időtartamot.

Ha az időtartam negatív, akkor a kapott órapillanat korábbi lesz, mint az adott alapóra.

Használata ellentételezés, kaphatunk pillanatokat az adott alapóra múltjában és jövőjében. Ha nulla időtartamot túllépünk, akkor ugyanazt az órát kapjuk, mint az adott alapórát:

Clock baseClock = Clock.systemDefaultZone (); // az eredmény órája később lesz, mint a baseClock Clock clock = Clock.offset (baseClock, Duration.ofHours (72)); System.out.println (óra5.instant ()); // az eredmény órája megegyezik a baseClock órával = Clock.offset (baseClock, Duration.ZERO); System.out.println (clock.instant ()); // az eredmény órája korábbi lesz, mint a baseClock clock = Clock.offset (baseClock, Duration.ofHours (-72)); System.out.println (clock.instant ());

gyárt:

2018-04-10T13: 24: 07,347Z 2018-04-07T13: 24: 07,348Z 2018-04-04T13: 24: 07,348Z

2.7. ketyegés()

Ez a statikus módszer a megadott óráról adja vissza azonnali példányokat a megadott időtartam legközelebbi előfordulására kerekítve. A megadott óra időtartamának pozitívnak kell lennie:

Clock clockDefaultZone = Clock.systemDefaultZone (); Clock clocktick = Clock.tick (clockDefaultZone, Duration.ofSeconds (30)); System.out.println ("Óra alapértelmezett zónája:" + clockDefaultZone.instant ()); System.out.println ("Óra pipa:" + órajel.instant ());

gyárt:

Óra alapértelmezett zónája: 2018-04-07T16: 42: 05.473Z Óra pipa: 2018-04-07T16: 42: 00Z

2.8. tickSeconds ()

Ez a statikus módszer az aktuális azonnali ketyegést egész másodpercben adja vissza az adott időzóna számára. Ebben az órában mindig az lesz nano-of-second mező értéke nulla:

ZoneId zoneId = ZoneId.of ("Ázsia / Kalkutta"); Óraóra = Clock.tickSeconds (zoneId); System.out.println (clock.instant ());

gyárt:

2018-04-07T17: 40: 23Z

Ugyanez érhető el a használatával ketyegés():

Clock clock = Clock.tick (Clock.system (ZoneId.of ("Ázsia / Kalkutta")), Duration.ofSeconds (1));

2.9. tickMinutes ()

Ez a statikus módszer az óra azonnali ketyegését adja eredményül egész percben a megadott időzóna számára. Ebben az órában mindig az lesz nano-of-second és perc másodperc mezők nullára állítva:

ZoneId zoneId = ZoneId.of ("Ázsia / Kalkutta"); Óraóra = Clock.tickMinutes (zoneId); System.out.println (clock.instant ());

gyárt:

2018-04-07T17: 26: 00Z

Ugyanez érhető el a használatával ketyegés():

Óraóra = Clock.tick (Óra rendszer (ZoneId.of ("Ázsia / Kalkutta")), Időtartam percek (1));

2.10. withZone ()

Ez a módszer ennek az órának a más időzónával rendelkező példányát adja vissza.

Ha van egy órapéldányunk egy meghatározott időzónára, akkor másolatot készíthetünk az óráról különböző időzónákra:

ZoneId zoneSingapore = ZoneId.of ("Ázsia / Szingapúr"); Clock clockSingapore = Clock.system (zoneSingapore); System.out.println (clockSingapore.instant ()); ZoneId zoneCalcutta = ZoneId.of ("Ázsia / Kalkutta"); Clock clockCalcutta = clockSingapore.withZone (zoneCalcutta); System.out.println (clockCalcutta.instant ());

gyárt:

2018-04-07T17: 55: 43.035Z 2018-04-07T17: 55: 43.035Z

2.11. getZone ()

Ez a módszer visszaadja az adott időzónáját Óra.

Óraóra = Clock.systemDefaultZone (); ZoneId zóna = óra.getZone (); System.out.println (zone.getId ());

gyárt:

Ázsia / Kalkutta

2.12. rögzített()

Ez a módszer egy olyan órát ad vissza, amely mindig ugyanazt a pillanatot adja vissza. A módszer fő felhasználási esete a tesztelés, ahol a rögzített óra biztosítja, hogy a tesztek ne függjenek az aktuális órától.

Clock fixedClock = Clock.fixed (Instant.parse ("2018-04-29T10: 15: 30.00Z"), ZoneId.of ("Ázsia / Kalkutta")); System.out.println (fixedClock);

gyárt:

FixedClock [2018-04-29T10: 15: 30Z, Ázsia / Kalkutta]

3. Következtetés

Ebben a cikkben belemerültünk a Java-ba Óra osztály és a különböző módszerek, amelyekkel a rendelkezésre álló módszerekkel felhasználhatjuk.

Mint mindig, a kódpéldák elérhetők a GitHubon.