Konvertálás a java.time.Instant és a java.sql.Timestamp között

1. Áttekintés

Mindkét java.time.Instant és java.sql.Timestamp osztályok az idővonal egy pontját képviselik az UTC-ben. Más szavakkal, ezek a Java-korszak óta eltelt nanoszekundumok számát jelentik.

Ebben a gyors bemutatóban átalakítjuk az egyiket a másikba a beépített Java módszerek használatával.

2. Konvertálás Azonnali nak nek Időbélyeg és vissza

Tudjuk használni Timestamp.from () átalakít Azonnalis az időbélyegekbe:

Instant instant = Instant.now (); Timestamp timestamp = Timestamp.from (azonnali); assertEquals (instant.toEpochMilli (), timestamp.getTime ());

És fordítva, használhatjuk Timestamp.toInstant () átalakít Időbélyegs bele Azonnalis:

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

Akárhogy is, mind a Azonnali és Időbélyeg ugyanazt a pontot képviseli az idővonalon.

Ezután vessünk egy pillantást a két osztály és az időzóna közötti kölcsönhatásra.

3. toString () Módszerbeli különbségek

Felhívás toString () tovább Azonnali és Időbélyeg másként viselkedik az időzóna vonatkozásában.Instant.toString () az időt UTC időzónában adja vissza. Másrészről, Timezone.toString () visszaadja az időt a helyi gép időzónájában.

Lássuk, mit kapunk híváskor toString () tovább azonnali és időzóna illetőleg:

Azonnali (UTC-ben): 2018-10-18T00: 00: 57.907Z Időbélyegző (GMT +05: 30-ban): 2018-10-18 05: 30: 57.907

Itt az időbélyeg.toString () olyan időt eredményezett, amely 5 óra 30 perc azután, hogy a készülék visszaadta az időt instant.toString (). Ennek oka, hogy a helyi gép időzónája GMT +5: 30 időzóna.

A kimenet a toString () módszer más, de mind a időbélyeg és azonnali ugyanazt a pontot képviselik az idővonalon.

Ezt a. Konvertálásával is ellenőrizhetjük Időbélyeg az UTC időzónába:

DateFormat df = DateFormat.getDateTimeInstance (); df = new SimpleDateFormat ("éééé-hh-nn.'H'HH: mm: ss: SS'Z '"); df.setTimeZone (TimeZone.getTimeZone ("UTC")); assertEquals (instant.toString (), df.format (timestamp) .toString ());

4. Következtetés

Ebben a gyors bemutatóban láttuk, hogyan lehet konvertálni a között java.time.Instant és java.sql.Timestamp osztályok Java-ban beépített módszerekkel.

Megnéztük azt is, hogy az időzóna hogyan befolyásolja a kimenet változását.

És mint mindig, a teljes kódpéldák elérhetők a GitHubon.