JAVA TimeZone Problem EDT Vs EST
Ich ein Neuling auf java und ist daher nicht in der Lage, dies herauszufinden, seit geraumer Zeit.
Ich benutze Windows XP, und die Maschine ist eingestellt, um Zeitzone: Eastern Time (US & Canada).
Ich habe eine Java-Anwendung, die die aktuelle Systemzeit und Zeitzone Informationen und schreibt einen string wie: 20101012 15:56:00 EST, in eine Datei.
Das Letzte Stück des oben genannten Zeitpunkt, D. H.: die Zeitzone, änderungen von EST EDT, wie ich mein system-Datum.
Präzise: Von November(zB: Nov2009) bis März (Mar 2010), es ist EST, sonst Hrsg.
EST ist, was ich will IMMER und nicht MESZ.
Gibt es eine Besondere Klasse /Funktion, durch die kann ich immer Lesen wie EST?
Warten auf Antwort.
Dank für Eure Antworten.
Gut, ich vergaß zu erwähnen, ein paar Dinge.
-
Möchte ich meine Maschine gesetzt werden: Eastern Time (US & Canada) in die windows-Zeitzone-Einstellungen.
-
In einfachen Worten, Was ich tun will ist: meine Maschine Zeit, und schreiben Sie in eine Textdatei
-
Ich bin mir bewusst, die Sommerzeit und was geschieht von März bis Nov.
Aber das problem ist, wenn ich Schreibe, meine Maschine mal in die Datei geschrieben ist es wie 2010 01 12 15:56:00 EST, wenn die Sommerzeit (DST) ist nicht vorhanden und als 20101012 15:56:00 MESZ, wenn die Sommerzeit vorhanden ist.
Meine Sorge ist, ob es Sommerzeit oder nicht, ich will schreiben, EST immer.
- Wenn die Zeit in der Datei ist
20101012 15:56:00 EDT
Sie wollen, es zu Lesen, wie20101012 15:56:00 EST
oder20101012 14:56:00 EST
? Ich werde gehen, Sie sind der Berechnung der Zeit-offsets und du bist immer verbrannt durch die Zeit ändert. - Wenn dies ist für die Protokollierung von Gründen, sollten Sie die Protokollierung der Zeit als UTC statt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube nicht, dass Sie sollten tun, was Sie vorschlagen.
Sagen Sie, dass unabhängig davon, was Ihr system-Zeitzone ist derzeit (östliche Zeit ist NICHT Eure Zeit-zone, aber UTC+5 oder +4 ist), Sie möchten die Anzeige EST. Dies ist schlichtweg falsch. Nehme an, es ist im Sommer, und dein computer denkt, dass es 2010/6/15 15:00 lokal. Sie drucken die aktuelle Zeit und Sie erhalten:
Gleich aus welchem Grund, denken Sie, dass die EDT ist unangenehm, und so werden Sie es ändern, um EST:
allerdings, wenn Sie senden Sie dieses snippet an jemand anderen innerhalb der nächsten Stunde, werden Sie gezwungen sein, zu denken, Sie reiste aus der Zukunft! Seit 15:00:00 EST 16:00:00 EDT.
Ich würde erstellen Sie eine benutzerdefinierte zone:
Bericht erstattet, wie EST und immer 5 Stunden vor der UTC. Insbesondere dürfen Sie nicht wählen Sie eine vorhandene Zeitzone oder werden Sie schließlich verbrannt werden, wenn eine zone update ändert die definition.
Tun, bewusst sein, dass durch erzwingen EST die Tage, die Sie anmelden, wird nur die Zeit angezeigt, die das system für 5 Monate im Jahr. Die anderen 7 Monate werden Sie eine Stunde ausgeschaltet. Kann es vereinfachen das Parsen der Datei, aber es wird die Benutzer verwirren.
Es sollte angemerkt werden, dass während der Sommermonate der östlichen Zeitzone, so ziemlich jedes major-Zentrum nutzt die Sommerzeit, so dass Sie richtig angezeigt wird die Zeit, die Menschen in dieser Zeitzone zu kümmern.
Wenn Sie wollen, dass es eine bestimmte Zeitzone, anstatt der Standard - /system-Zeitzone, dann können Sie erzwingen, das TimeZone an EST über so etwas wie dieses:
Obwohl, wie Michael oben erwähnt, ist die Dokumentation empfiehlt die Verwendung einer lokalen vollständiger name wie "America/New York" eher als die Allgemeine Zeitzone Abkürzung.
Wenn Sie wollen, zu behaupten, dass es wirklich so ist EST, obwohl Sie wissen, dass es EDT ist, dann nehme ich an können Sie Folgendes tun: verwenden Sie eine
SimpleDateFormat
Beispiel mit einem benutzerdefinierten Muster enthalten nicht die Zeitzoneninformationen, dann Wende "EST" an das Ende der Zeichenfolge, die Sie schreiben.Ihre Frage ist immer noch nicht klar.
Ich nicht undestand, wenn Sie wollen einfach nur, um zu erzwingen, 'EST' chars, auch wenn deine Maschine eingestellt ist, um automatisch chage DST, oder was Sie wollen, ist, um die tatsächliche Zeit auf EST.
So haben Sie zwei Möglichkeiten:
Ihre Maschine mal eingestellt ist 2:15 Uhr und Sommerzeit-in-Effekt, und Sie möchten, schreiben 2:15pm EST (das ist nicht die richtige aktuelle Zeit), die Sie verwenden sollten " = SimpleDateFormat. Auf diese Weise, Sie werden Lügen über die Zeit. Doch, doch, Sie wissen, was am besten für Euch passt.
Ihre Maschine mal eingestellt ist 2:15 Uhr und Sommerzeit-in-Effekt, und Sie möchten, schreiben Sie 1:15pm EST, die Sie verwenden sollten: TimeZone.setDefault(TimeZone.getTimeZone("EST"))
Die Lösung hängt davon ab, warum schreiben Sie diese Zeit aus und was wollen Sie tun, wenn Sie Lesen Sie es wieder an (was es geht, um verwendet werden, um zu tun, und nicht, "was Sie wollen"). Immer schreiben Sie es aus, wie EST ist eine falsche Darstellung der Tatsache. Beim EDT ist in der Wirkung ist es nicht, in der Tat, EST. Wenn Sie versuchen, zu verfolgen einige "absolute" Zeitpunkt empfehle ich die Arbeit in GMT, anstatt in einer Zeitzone.
Das ist keine richtige Zeitzone (weder MESZ und EST). Eine Zeitzone (im Sinne von Java) ist so etwas wie "America/Phoenix", was ist eine ID für eine administrative Zeitzone, die sowohl eine Basis-offset und (Optional) wechselt zur Sommerzeit an bestimmten Terminen. Beides kann sich ändern, und es ist notwendig, solche änderungen zu berücksichtigen, die bei der Interpretation historischer Daten.
So, wenn Sie nicht wollen, zu DST-Schalter, wählen Sie eine Zeitzone, die nicht beachten die Sommerzeit. Es ist möglich, dass es keine solche timezone und versucht zu handeln wie es ist würde in der Einführung eines unmöglichen Datums.