Wie konvertiere ich java.sql.Timestamp in java.time.OffsetDateTime?Java

Java-Forum
Anonymous
 Wie konvertiere ich java.sql.Timestamp in java.time.OffsetDateTime?

Post by Anonymous »

Ich arbeite an einem Scala-Projekt und muss den Typ OffsetDateTime dem Typ SQL Timestamp zuordnen. In DB hätte ich gerne UTC-Zeiten.

Die Konvertierung von OffsetDateTime zu Timestamp ist unkompliziert (Hinweis aus dieser Frage) und funktioniert wie erwartet:

Code: Select all

import java.time._
import java.sql.Timestamp
val ofsdatetime = OffsetDateTime.now()
// ofsdatetime: java.time.OffsetDateTime = 2017-04-04T21:46:33.567+02:00

val tstamp = Timestamp.valueOf(ofsdatetime.atZoneSameInstant(ZoneOffset.UTC).toLocalDateTime())
// tstamp: java.sql.Timestamp = 2017-04-04 19:46:33.567
Wie Sie sehen können, wurde die Zeitzone entfernt und der Zeitstempel liegt zwei Stunden zurück in der Zeit (UTC), großartig!

Die Rückkonvertierung des Zeitstempels in OffsetDateTime funktioniert nicht wie erwartet:

Code: Select all

OffsetDateTime.ofInstant(Instant.ofEpochMilli(tstamp.getTime), ZoneId.systemDefault())

// java.time.OffsetDateTime = 2017-04-04T19:46:33.567+02:00
Die Zeitzone wurde zur neu erstellten OffsetDateTime hinzugefügt, aber die Zeit ist nicht korrekt (es ist immer noch UTC, ich muss sie an die tatsächliche Zeitzone anpassen).

Warum? Was mache ich falsch?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post