web-dev-qa-db-fra.com

Comment rendre l'heure UTC Java.sql.Timestamp?

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.

5
DayTripperID

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());
8
Joe C

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

0
David A