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

1. Oversigt

Begge java.tid. øjeblikkelig og java.sql.Tidsstempel klasser repræsenterer et punkt på tidslinjen i UTC. Med andre ord repræsenterer de antallet af nanosekunder siden Java-epoken.

I denne hurtige vejledning konverterer vi den ene til den anden ved hjælp af indbyggede Java-metoder.

2. Konvertering Øjeblikkelig til Tidsstempel og tilbage

Vi kan bruge Tidsstempel.fra () at konvertere Øjeblikkeligs i tidsstempler:

Øjeblikkelig øjeblikkelig = Øjeblikkelig. Nu (); Tidsstempel tidsstempel = Tidsstempel.fra (øjeblikkelig); assertEquals (instant.toEpochMilli (), tidsstempel.getTime ());

Og omvendt kan vi bruge Tidsstempel.toInstant () at konvertere Tidsstempels ind i Øjeblikkeligs:

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

Uanset hvad, både Øjeblikkelig og Tidsstempel repræsenterer det samme punkt på tidslinjen.

Lad os derefter se på interaktionen mellem de to klasser og tidszonen.

3. toString () Metode Forskelle

Påkalder toString ()Øjeblikkelig og Tidsstempel opfører sig forskelligt med hensyn til tidszone.Instant.toString () returnerer tiden i UTC-tidszone. På den anden side, Timezone.toString () returnerer tiden i den lokale maskintidszone.

Lad os se, hvad vi får, når vi ringer toString ()øjeblikkelig og tidszone henholdsvis:

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

Her, tidsstempel.toString () resulterede i en tid, der er 5 timer og 30 minutter efter den tid, der blev returneret af instant.toString (). Dette skyldes, at den lokale maskines tidszone er ved GMT +5: 30-tidszone.

Resultatet af toString () metoden er anderledes, men begge er tidsstempel og øjeblikkelig repræsenterer det samme punkt på tidslinjen.

Vi kan også kontrollere dette ved at konvertere Tidsstempel til UTC-tidszonen:

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. Konklusion

I denne hurtige vejledning så vi, hvordan vi konverterede mellem java.tid. øjeblikkelig og java.sql.Tidsstempel klasser i Java ved hjælp af indbyggede metoder.

Vi har også kigget på, hvordan tidszonen påvirker, hvordan output ændres.

Og som altid er de komplette kodeeksempler tilgængelige på GitHub.


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