Á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.