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: Č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. 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: 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: 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.instant = timestamp.toInstant (); assertEquals (instant.toEpochMilli (), timestamp.getTime ());
3. natiahnuť() Rozdiely metód
Okamžité (v UTC): 2018-10-18T00: 00: 57,907Z Časová značka (v GMT +05: 30): 2018-10-18 05:30: 57,907
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