Usa java.sql solo per il trasferimento del database
I tipi java.sql, come ad come java.sql.Timestamp
, dovrebbe essere usato solo per il trasferimento dentro e fuori dal database. Converti immediatamente in tipi java.time in Java 8 e versioni successive.
java.time.Instant
A java.sql.Timestamp
mappe ad un java.time.Instant
, un momento sulla timeline in UTC.
java.sql.Timestamp ts = myResultSet.getTimestamp(…);
Instant instant = ts.toInstant();
Time Zone
Applicare il/fuso orario desiderato prevede di ottenere un ZonedDateTime
.
ZoneId zoneId = ZoneId.of("America/Montreal");
ZonedDateTime zdt = ZonedDateTime.ofInstant(instant , zoneId);
formattati Strings
Utilizzare un DateTimeFormatter
per generare la stringa. I codici di pattern sono simili a quelli di java.text.SimpleDateFormat
ma non esattamente, quindi leggi attentamente il documento.
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu.MM.dd.HH.mm.ss");
String output = zdt.format(formatter);
Questo formato particolare è ambigua sul suo significato esatto in quanto manca qualsiasi indicazione di offset-from-UTC o il fuso orario.
ISO 8601
Se avete qualche voce in capitolo, vi consiglio di considerare l'utilizzo di standard di ISO 8601 formati piuttosto che rotolare il proprio. Il formato standard è abbastanza simile al tuo. Ad esempio:
2016-02-20T03:26:32+05:30
.
Le classi java.time utilizzano questi formati standard per impostazione predefinita, quindi non è necessario specificare un modello. La classe ZonedDateTime
estende il formato standard aggiungendo il nome del fuso orario (un miglioramento saggia).
String output = zdt.toString(); // Example: 2007-12-03T10:15:30+01:00[Europe/Paris]
Converti in java.sql
È possibile convertire da java.time torna a java.sql.Timestamp
. Estrarre un Instant
dal ZonedDateTime
.
Nuovi metodi sono stati aggiunti alle classi precedenti per facilitare la conversione in/da classi java.time.
java.sql.Timestamp ts = java.sql.Timestamp.from(zdt.toInstant());
Ancora meglio in Java 8: http: //docs.oracle.com/javase/tutorial/datetime/ – nimsson