Meine Anwendung wurde in einem Debian-vps in den USA in Los Angeles eingesetzt. Code wie new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date())
gibt die aktuelle Zeit von America / Los Angeles zurück.
Kann ich einige Einstellungen in der Tomcat-Konfigurationsdatei ( server.xml
oder catalina.sh
oder was?) vornehmen, so dass die aktuelle Zeit eine bestimmte Zeitzone wie GMT + 8 oder Asien zurückgibt / Taipeh ???
Mit all den verschiedenen Orten, an denen Sie Zeitzonen festlegen können, ist es immer (im Allgemeinen) am besten, die Zeitzone explizit festzulegen, wenn Sie mit Zeiten arbeiten. Ja, Ihr Server ist in Los Angeles, aber wo sind Ihre Benutzer?
Da der explizite Umgang mit Zeitzonen Ihre Anwendung etwas komplexer macht (aber auch korrekter, weniger überraschend, schwieriger zu testen), wäre die nächstbeste Lösung, tomcat (java) explizit mitzuteilen, auf welche Zeitzone Ihre Serveruhr eingestellt ist. Vorsicht: Es gibt einige Ebenen, um dies zu setzen: Stellen Sie Ihre Serveruhr auf UTC ein, konfigurieren Sie Ihr Server-Betriebssystem als PST und informieren Sie java dann über die Zeitzone, auf der sich Ihr Server befindet, z. in setenv.sh
do CATALINA_OPTS="$CATALINA_OPTS -Duser.timezone=America/Los_Angeles"
(oder was auch immer Ihre Zeitzone ist), um Java für Ihre Zeitzone zu konfigurieren.
Testen, spülen, wiederholen bis zufrieden mit der Konfiguration. Aber machen Sie es zu einer ausdrücklichen Wahl auf allen verschiedenen Ebenen, die Sie in die Hand nehmen können. Das Auflösen der Zeitzone ist eher eine Java-Funktion als eine Tomcat-Funktion.
Es ist sehr wichtig für die Wartbarkeit Ihrer Software, immer Zeiten in UTC zu speichern. Wenn Sie jemals in Ihrer lokalen Zeitzone speichern, wird die Berechnung jeder anderen Zeitzone ein Durcheinander sein - denken Sie an die Sommerzeit, die Änderung der Zeitzonen in verschiedenen Regionen der Welt usw.
Also: Setzen Sie Ihren Server auf UTC, dann holen Sie sich die aktuelle Uhrzeit, prüfen Sie, ob sie korrekt ist. Zu Anzeigezwecken können Sie die lokale Zeitzone des Benutzers (z. B. PST) verwenden, aber für die Speicherung und Berechnung wird UTC dringend empfohlen.
Tomcat's persönliche Zeitzone wird in seinem Startskript wie folgt angegeben:
%Vor%Wenn Sie es von Eklipse ändern möchten ... Run - & gt; Konfiguration ausführen - & gt; Apache Kater - & gt; Tomcat Server - & gt; VM-Argumente hinzufügen -Duser.timezone = America / Montreal