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: 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. 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: 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: 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.instant = vremenska oznaka.toInstant (); assertEquals (instant.toEpochMilli (), timestamp.getTime ());
3. toString () Razlike u metodama
Trenutačno (u UTC): 2018-10-18T00: 00: 57.907Z Vremenska oznaka (u GMT +05: 30): 2018-10-18 05: 30: 57.907
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