Pretvori između java.time.Instant i java.sql.Timestamp

1. Pregled

Oba java.time.Instant i java.sql.Timestamp razredi predstavljaju točku na vremenskoj liniji u UTC. Drugim riječima, oni predstavljaju broj nanosekundi od Java ere.

U ovom brzom vodiču pretvorit ćemo jedno u drugo pomoću ugrađenih Java metoda.

2. Pretvaranje Trenutak do Vremenska oznaka i natrag

Možemo koristiti Vremenska oznaka.from () pretvoriti Trenutaks u vremenske žigove:

Instant instant = Instant.now (); Vremenska oznaka vremenska oznaka = Timestamp.from (instant); assertEquals (instant.toEpochMilli (), timestamp.getTime ());

I obrnuto, možemo koristiti Timestamp.toInstant () pretvoriti Vremenska oznakas u Trenutaks:

instant = vremenska oznaka.toInstant (); assertEquals (instant.toEpochMilli (), timestamp.getTime ());

U svakom slučaju, oba Trenutak i Vremenska oznaka predstavlja istu točku na vremenskoj traci.

Dalje, pogledajmo interakciju između dvije klase i vremenske zone.

3. toString () Razlike u metodama

Pozivanje toString () na Trenutak i Vremenska oznaka ponaša se drugačije u odnosu na vremensku zonu.Instant.toString () vraća vrijeme u UTC vremenskoj zoni. S druge strane, Timezone.toString () vraća vrijeme u vremenskoj zoni lokalnog stroja.

Pogledajmo što ćemo dobiti kad zovemo toString () na trenutak i Vremenska zona odnosno:

Trenutačno (u UTC): 2018-10-18T00: 00: 57.907Z Vremenska oznaka (u GMT +05: 30): 2018-10-18 05: 30: 57.907

Ovdje, timestamp.toString () rezultiralo vremenom koje je 5 sati 30 minuta nakon vremena koje je vratio instant.toString (). To je zato što je vremenska zona lokalnog stroja GMT +5: 30 vremenska zona.

Rezultat toString () metoda je različita, ali obje metode vremenska oznaka i trenutak predstavljaju istu točku na vremenskoj traci.

To također možemo provjeriti pretvaranjem Vremenska oznaka u UTC vremensku zonu:

DateFormat df = DateFormat.getDateTimeInstance (); df = novi SimpleDateFormat ("yyyy-MM-dd'T'HH: mm: ss: SS'Z '"); df.setTimeZone (TimeZone.getTimeZone ("UTC")); assertEquals (instant.toString (), df.format (timestamp) .toString ());

4. Zaključak

U ovom smo brzom vodiču vidjeli kako pretvoriti java.time.Instant i java.sql.Timestamp klase u Javi pomoću ugrađenih metoda.

Također smo imali pogled na to kako vremenska zona utječe na to kako se izlaz mijenja.

Kao i uvijek, cjeloviti primjeri koda dostupni su na GitHubu.


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