Prevod medzi java.time.Instant a java.sql.Timestamp

1. Prehľad

Oboje java.time.Instant a java.sql.Timestamp triedy predstavujú bod na časovej osi v UTC. Inými slovami, predstavujú počet nanosekúnd od epochy Javy.

V tomto rýchlom výučbe prevedieme jeden na druhý pomocou zabudovaných metód Java.

2. Konvertovanie Okamžité do Časová značka a späť

Môžeme použiť Timestamp.from () konvertovať Okamžités do časových pečiatok:

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

A naopak, môžeme použiť Timestamp.toInstant () konvertovať Časová značkas do Okamžités:

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

Či tak alebo onak, oboje Okamžité a Časová značka predstavuje rovnaký bod na časovej osi.

Ďalej sa pozrime na interakciu medzi týmito dvoma triedami a časovým pásmom.

3. natiahnuť() Rozdiely metód

Vyvolávanie natiahnuť() na Okamžité a Časová značka správa sa odlišne vzhľadom na časové pásmo.Okamžitý reťazec () vráti čas v časovom pásme UTC. Na druhej strane, Timezone.toString () vráti čas v časovom pásme miestneho stroja.

Pozrime sa, čo dostaneme, keď zavoláme natiahnuť() na okamžite a časové pásmo respektíve:

Okamžité (v UTC): 2018-10-18T00: 00: 57,907Z Časová značka (v GMT +05: 30): 2018-10-18 05:30: 57,907

Tu timestamp.toString () vyústil do času, ktorý je 5 hodín 30 minút po čase vrátenom EÚ; instant.toString (). Je to tak preto, lebo časové pásmo miestneho počítača je v časovom pásme GMT +5: 30.

Výstupom z natiahnuť() metóda je iná, ale obe časová značka a okamžite predstavujú rovnaký bod na časovej osi.

Môžeme to tiež overiť prevedením súboru Časová značka do časového pásma UTC:

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

4. Záver

V tomto rýchlom výučbe sme videli, ako prevádzať konverzie java.time.Instant a java.sql.Timestamp triedy v Jave pomocou zabudovaných metód.

Pozreli sme sa tiež na to, ako časové pásmo ovplyvňuje zmeny výstupov.

A ako vždy, úplné príklady kódov sú k dispozícii na GitHub.


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