public static void main(String[] args) {
LocalDateTime ldt = LocalDateTime.now();
ZonedDateTime zdt = ZonedDateTime.of(ldt, ZoneId.systemDefault());
Instant instant = Instant.from(zdt);
Timestamp timestamp = Timestamp.from(instant);
System.out.println(ldt + "\n");
System.out.println(zdt + "\n");
System.out.println(instant + "\n");
System.out.println(timestamp + "\n");
}
Et ça imprime:
2017-05-07T18:13:26.969
2017-05-07T18:13:26.969-04:00[America/New_York]
2017-05-07T22:13:26.969Z
2017-05-07 18:13:26.969
Comment puis-je faire une sauvegarde SQL Timestamp
avec le même temps que la Instant
? Je dois pouvoir obtenir la Timestamp
de n'importe où et la convertir à n'importe quelle heure dans cette partie du monde. Le problème est qu’elle continue à économiser en même temps que l’horloge de mon système.
Il est préférable d’obtenir Timestamp
d’une LocalDateTime
plutôt que d’une Instant
.
La première étape consiste à prendre votre ZonedDateTime
et à la convertir en GMT:
ZonedDateTime gmt = zdt.withZoneSameInstant(ZoneId.of("GMT"));
Ensuite, vous pouvez le convertir en Timestamp
via un LocalDateTime
:
Timestamp timestamp = Timestamp.valueOf(gmt.toLocalDateTime());
Vous devrez peut-être utiliser la surcharge spécifique de setTimestamp qui prend un objet Calendar si vous souhaitez représenter une valeur "TIMESTAMP WITH TIME ZONE".