Frage
- Mein Server hat GMT + 7, so dass, wenn ich auf einen anderen Server eine andere GMT Zeitzone, die sich alle in db gespeicherte Datum wird nicht richtig?
- Ja Q1 richtig ist, wie etwa i Datum in GMT + 0 Zeitzone speichert und sie in benutzerdefinierten GMT Zeitzone von jedem Mitglied gewählt Anzeige
- Wie erhalte ich Datum GMT + 0 in Java
Lösung
1) Zitat aus dem javadocs, Java-Millisekunden-Zeitstempel sind
die Differenz in Millisekunden gemessen wird, zwischen der aktuellen Zeit und Mitternacht, 1. Januar 1970 UTC.
Wenn daher der Zeitstempel ist UTC / GMT, wenn Sie es in der Datenbank speichern dieses Datum korrekt unabhängig von der Zeitzone des Servers sein.
2) für die Anzeige der Zeitstempel Formatierung auf der Zeitzone abhängig wäre der richtige Ansatz.
3) Erstellen einer neuen java.util.Date Instanz und ruft getTime () werden Sie den Zeitstempel erhalten für GMT + 0 in Java.
Andere Tipps
zu Marks Punkt hinzuzufügen, sobald Sie eine java.util.Date haben, können Sie „convert“ es jede Zeitzone (wie vom Benutzer ausgewählt). Hier ist ein Codebeispiel in Groovy (wird in Java mit leichtem Mods arbeiten):
// This is a test to prove that in Java, you can create ONE java.util.Date
// and easily re-display it in different TimeZones
fmtStr = "MM/dd/yyyy hh:mm aa zzz"
myDate = new java.util.Date()
sdf = new java.text.SimpleDateFormat(fmtStr)
// Default TimeZone
println "Date formatted with default TimeZone: " + sdf.format(myDate)
// GMT
sdf.setTimeZone(TimeZone.getTimeZone("GMT"))
println "Date formatted with GMT TimeZone: " + sdf.format(myDate)
// America/New_York
sdf.setTimeZone(TimeZone.getTimeZone("America/New_York"))
println "Date formatted with America/New_York TimeZone: " + sdf.format(myDate)
// PST
sdf.setTimeZone(TimeZone.getTimeZone("PST"))
println "Date formatted with PST TimeZone: " + sdf.format(myDate)
In der Standardeinstellung, wenn Sie ein Datum in Java erhalten ihre in der aktuellen Zeitzone, können Sie die
Ich würde vorschlagen, dass Sie Datum verwenden nur als „Inhaber“ und schlagen vor, dass Sie den Kalender Instanzen stattdessen verwenden. Um einen Kalender in der GMT Zeitzone zu erhalten nur verwenden diese: Ein Kalender wird viel Nutzen bieten, wenn Sie mit Zeiten und Daten arbeiten. Zum Beispiel eine Stunde, um das Hinzufügen ist einfach: Schließlich, wenn Sie ein Datum benötigen verwenden Sie nur diese: Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+00"))
cal.add(Calendar.HOUR, 1);
Date date = cal.getTime();
Für Q3 betrachten ZonedDateTime Klasse.