Nastavte časové pásmo dátumu v Jave

1. Prehľad

V tomto rýchlom výučbe sa dozvieme, ako nastaviť časové pásmo dátumu pomocou jazyka Java 7, Java 8 a knižnice Joda-Time.

2. Používanie Java 8

Java 8 predstavila nové API Date-Time pre prácu s dátumami a časmi, ktoré bolo do veľkej miery založené na knižnici Joda-Time.

The Okamžité triedy z rozhrania Java Date Time API modeluje jediný okamžitý bod na časovej osi v UTC. To predstavuje počet nanosekúnd od epochy prvého okamihu roku 1970 UTC.

Najprv získame prúd Okamžité zo systémových hodín a ZoneId pre názov časového pásma:

Okamžité nowUtc = Instant.now (); ZoneId asiaSingapore = ZoneId.of ("Ázia / Singapur");

Nakoniec ZoneId a Okamžité možno využiť na vytvorenie objektu dátumu a času s podrobnosťami o časových pásmach. The ZonedDateTime trieda predstavuje dátum a čas s časovým pásmom v kalendárnom systéme ISO-8601:

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

Použili sme Java 8 ZonedDateTime reprezentovať dátum a čas s časovým pásmom.

3. Používanie Java 7

V prostredí Java 7 je nastavenie časovej zóny trochu zložité. The Dátum trieda (ktorá predstavuje konkrétny okamih v čase) neobsahuje žiadne informácie o časovom pásme.

Najprv si dajme aktuálny dátum UTC a a Časové pásmo objekt:

Dátum nowUtc = nový Dátum (); TimeZone asiaSingapore = TimeZone.getTimeZone (timeZone);

V prostredí Java 7 musíme používať Kalendár triedy, ktorá predstavuje dátum s časovým pásmom.

Nakoniec môžeme vytvoriť a nowUtc kalendár s asiaSingapore TimeZone a nastavte čas:

Calendar nowAsiaSingapore = Calendar.getInstance (asiaSingapore); nowAsiaSingapore.setTime (nowUtc);

Odporúča sa vyhnúť sa rozhraniu API pre dátum a čas Java 7 v prospech rozhrania API pre dátum a čas Java 8 alebo knižnici Joda-Time.

4. Používanie Joda-Time

Ak Java 8 nie je možnosťou, stále môžeme získať rovnaký druh výsledku z Joda-Time, de facto štandard pre operácie dátumu a času vo svete pred Java 8.

Najprv musíme pridať závislosť Joda-Time pom.xml:

 joda-time joda-time 2.10 

Na reprezentáciu presného bodu na časovej osi môžeme použiť Okamžité od org.joda.čas balíček. Trieda interne uchováva jeden údaj, okamih ako milisekundy z obdobia Javy 1970-01-01T00: 00: 00Z:

Okamžité nowUtc = Instant.now ();

Použijeme DateTimeZone reprezentovať časové pásmo (pre zadané ID časového pásma):

DateTimeZone asiaSingapore = DateTimeZone.forID ("Ázia / Singapur");

Teraz nowUtc čas bude prevedený na a Dátum Čas objekt pomocou informácií o časovom pásme:

DateTime nowAsiaSingapore = nowUtc.toDateTime (asiaSingapore);

Takto je možné pomocou Joda-time API kombinovať informácie o dátume a časovom pásme.

5. Záver

V tomto článku sme zistili, ako nastaviť časové pásmo v Jave pomocou Java 7, 8 a Joda-Time API. Ak sa chcete dozvedieť viac informácií o podpore dátumu a času v Java 8, pozrite si naše úvodné informácie o dátume a čase v Java 8.

Útržok kódu je ako vždy k dispozícii v úložisku GitHub.


$config[zx-auto] not found$config[zx-overlay] not found