Konverter mellom java.time.Instant og java.sql.Timestamp

1. Oversikt

Både java.tid. øyeblikkelig og java.sql.Tidsstempel klasser representerer et punkt på tidslinjen i UTC. De representerer med andre ord antall nanosekunder siden Java-epoken.

I denne raske opplæringen konverterer vi den ene til den andre ved hjelp av innebygde Java-metoder.

2. Konvertering Umiddelbar til Tidsstempel og tilbake

Vi kan bruke Timestamp.from () å konvertere Umiddelbars inn i tidsstempler:

Øyeblikkelig øyeblikkelig = Øyeblikkelig. Nå (); Tidsstempel tidsstempel = Tidsstempel.fra (øyeblikkelig); assertEquals (instant.toEpochMilli (), timestamp.getTime ());

Og omvendt kan vi bruke Timestamp.toInstant () å konvertere Tidsstempels inn i Umiddelbars:

øyeblikkelig = tidsstempel.tilInstant (); assertEquals (instant.toEpochMilli (), timestamp.getTime ());

Uansett, både Umiddelbar og Tidsstempel representerer det samme punktet på tidslinjen.

La oss så se på samspillet mellom de to klassene og tidssonen.

3. toString () Metode Forskjeller

Påkaller toString ()Umiddelbar og Tidsstempel oppfører seg annerledes med hensyn til tidssone.Instant.toString () returnerer tiden i UTC-tidssone. På den andre siden, Timezone.toString () returnerer tiden i den lokale maskins tidssonen.

La oss se hva vi får når vi ringer toString ()umiddelbar og tidssone henholdsvis:

Øyeblikkelig (i UTC): 2018-10-18T00: 00: 57.907Z Tidsstempel (i GMT +05: 30): 2018-10-18 05: 30: 57.907

Her, tidsstempel.toString () resulterte i en tid som er 5 timer 30 minutter etter at tiden ble returnert av instant.toString (). Dette fordi den lokale maskinens tidssone er på GMT +5: 30 tidssone.

Resultatet av toString () metoden er annerledes, men begge tidsstempel og umiddelbar representerer det samme punktet på tidslinjen.

Vi kan også bekrefte dette ved å konvertere Tidsstempel til UTC-tidssone:

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

4. Konklusjon

I denne raske opplæringen så vi hvordan vi konverterer mellom java.tid. øyeblikkelig og java.sql.Tidsstempel klasser i Java ved hjelp av innebygde metoder.

Vi har også sett på hvordan tidssonen påvirker hvordan produksjonen endres.

Og som alltid er de komplette kodeeksemplene tilgjengelig på GitHub.


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