Was ich tun muss, ist:
1) Holen Sie sich das Gebietsschema des Benutzers aus der Anfrage.
2) Erstellen Sie ein neues sql.Date-Objekt mit dem aktuellen Datum und der aktuellen Uhrzeit basierend auf dem Gebietsschema des Benutzers
3) Schreiben Sie es in MySQL db, Spaltentyp: TIMESTAMP
Was ich habe ist:
%Vor%Das Datum ist OK, aber es gibt ein Problem mit der Zeit - immer um 12:00:00.
Irgendwelche Vorschläge? Gibt es einen effizienteren Weg, dies zu tun?
Wenn Sie Zeit haben wollen, brauchen Sie einen java.sql.Timestamp, kein java.sql.Date und eine timestamp-Spalte in der Datenbank.
Beachten Sie, dass request.getLocale das Tool verwendet Wert der Accept-Language-Überschrift und gibt möglicherweise nicht immer das richtige Gebietsschema.
Das Abrufen der -Zeitzone basierend auf dem Gebietsschema ist möglicherweise nicht ihre tatsächliche Zeitzone .
Ein Beispiel: Hier in Australien ist das Gebietsschema "en-AU", aber wir haben ein paar Zeitzonen mit bis zu 3 Stunden Unterschied.
Ich denke, in den USA haben sie auch dieses Problem.
Eine mögliche Lösung besteht stattdessen darin, UTC-Zeit zu speichern. Wenn der Benutzer dann seine Zeitzone zum Beispiel in seinen Präferenzen einstellt oder eine andere Methode zum Übergeben der Zeitzone verwendet (Client / Browser-Information über AJAX), dann können Sie die UTC-Zeit basierend auf einer java.util.Calendar
-Instanz anpassen .