Dieses Problem ist sehr weit verbreitet. Zum Beispiel, hier sind einige Bemerkungen von Martin Fowler.
Das zugrunde liegende Problem ist, dass Java Datum Klassen behandeln Daten wie Mengen in der Physik - Darstellungen eines bestimmten, unveränderlichen Zeitpunkts.
Das Problem ist, dass dies nicht übereinstimmt, wie die meisten Menschen beiläufig über die Zeit denken. Im typischen Diskurs denken die Leute an "2009-08-01 18:00" als feste Idee. Das Problem ist, dass an eine solche Darstellung keine Zeitzone gebunden ist; daher repräsentiert es nicht wirklich einen bestimmten Augenblick.
Dies ist eine anhaltende Quelle der Verwirrung in vielen Anwendungen. Während Java immer Zeitzonen verwendet (entweder implizit oder explizit), speichern Datenbanken normalerweise keine Zeitzoneninformationen zusammen mit Datumsangaben. Daher muss Java beim Erstellen eines Date-Objekts eine angenommene Zeitzone HINZUFÜGEN. Dies wird von einem JDBC-Treiber ausgeführt, wenn der Wert in ein Date-Objekt konvertiert wird. Wenn ein solcher Code auf einem Server ausgeführt wird, stimmt die angenommene Zeitzone häufig nicht mit der vom Client/Endbenutzer verwendeten überein.
Die einzige Antwort besteht darin, sicherzustellen, dass Ihr Java-Code eine "Standard" -Zeitzone verwendet.