Állítsa be a dátum időzónáját a Java-ban

1. Áttekintés

Ebben a gyors bemutatóban megtudhatjuk, hogyan állíthatjuk be a dátum időzónáját a Java 7, Java 8 és a Joda-Time könyvtár segítségével.

2. A Java 8 használata

A Java 8 új Date-Time API-t vezetett be a dátumokkal és időkkel való munkavégzéshez, amely nagyrészt a Joda-Time könyvtáron alapult.

A Azonnali osztály a Java Date Time API-ból egyetlen pillanatnyi pontot modellez az idővonalon UTC-ben. Ez a nanoszekundumok számát jelenti az UTC 1970 első pillanatának korszaka óta.

Először megkapjuk az áramot Azonnali a rendszerórától és ZoneId az időzóna nevéhez:

Instant nowUtc = Instant.now (); ZoneId asiaSingapore = ZoneId.of ("Ázsia / Szingapúr");

Végül a ZoneId és Azonnali felhasználható dátum-idő objektum létrehozására időzóna-részletekkel. A ZonedDateTime osztály az ISO-8601 naptárrendszerben egy dátumot és idõzónát képvisel:

ZonedDateTime nowAsiaSingapore = ZonedDateTime.ofInstant (nowUtc, asiaSingapore);

Java 8-kat használtunk ZonedDateTime hogy egy dátumot és időt ábrázoljon egy időzónával.

3. A Java 7 használata

A Java 7-ben az időzóna beállítása kissé trükkös. A Dátum osztály (amely egy adott pillanatot képvisel az időben) nem tartalmaz időzóna információkat.

Először kapjuk meg az aktuális UTC dátumot és a Időzóna tárgy:

Date nowUtc = new Date (); TimeZone asiaSingapore = TimeZone.getTimeZone (timeZone);

A Java 7-ben a Naptár osztály, amely egy dátumot jelöl egy időzónával.

Végül létrehozhatunk egy nowUtc naptár a ... val asiaSingapore TimeZone és állítsa be az időt:

Naptár nowAsiaSingapore = Calendar.getInstance (asiaSingapore); nowAsiaSingapore.setTime (nowUtc);

Javasoljuk, hogy kerülje a Java 7 dátum és idő API-t a Java 8 dátum és idő API vagy a Joda-Time könyvtár javára.

4. A Joda-Time használata

Ha a Java 8 nem választható, még mindig ugyanolyan eredményt kaphatunk a Joda-Time-tól, de facto szabvány a dátum-idő műveletekre a Java 8 előtti világban.

Először hozzá kell adnunk a Joda-Time függőséget pom.xml:

 joda-idő joda-idő 2.10 

Pontos pont ábrázolására az idővonalon, amelyet felhasználhatunk Azonnali tól től org.joda.time csomag. Belsőleg az osztály egyetlen adatot tárol, pillanatnyi milliszekundumban az 1970-01-01T00: 00: 00Z Java-korszakból:

Instant nowUtc = Instant.now ();

Majd használjuk DateTimeZone időzóna ábrázolása (a megadott időzóna azonosítóhoz):

DateTimeZone asiaSingapore = DateTimeZone.forID ("Ázsia / Szingapúr");

Most a nowUtc az idő a-ra változik Dátum idő objektum az időzóna információinak felhasználásával:

DateTime nowAsiaSingapore = nowUtc.toDateTime (asiaSingapore);

Így használható a Joda-time API a dátum és az időzóna információinak egyesítésére.

5. Következtetés

Ebben a cikkben megtudtuk, hogyan állíthatjuk be az időzónát a Java-ban a Java 7, 8 és a Joda-Time API használatával. Ha többet szeretne megtudni a Java 8 dátum-idő támogatásáról, tekintse meg a Java 8 dátum-idő bevezetőt.

Mint mindig, a kódrészlet elérhető a GitHub adattárban.