Javascript anderes Land vortäuschen / Zeitzone ändern

  • Sagt mal, weiß das einer. Irgendwie stehe ich nun völlig auf dem Schlauch. Ich habe hier in JS eine ganz normale Zeitberechnung. Nun möchte ich mit der die Zeiten anderer Länder haben. Das geht auch, wenn ich hier von "Zeitzone Berlin" aus z.B. "New York" abfrage. Was ich aber eigentlich möchte ist nicht nur von hier aus eine andere Zeitzone zu betrachten, sondern meine eigene auch zu ändern, eben um das ganze testen zu können. Es geht also nicht um JS-Code, den würde ich hinbekommen, sondern wie man das testen / simulieren kann?

    Also so was wie etwa: Zeige mir den Unterschied "Berlin -> New York" und eben auch den Unterschied "Buenos Aires -> New York". Nur, wie stelle ich das an?

    Sämtliche Zeitfunktionen in Javascript basieren ja auf "Date" und das nutzt immer die lokalen Einstellungen, also Berlin. Selbst wenn ich UTC verwende gibt mir Date deenoch die Zeitzone GMT+1 zurück, dann halt mit einer Stunde Zeitversatz in der Zeit selbst. An sich stimmt es ja, aber ich will eben kein GMT+1 haben.

    Habe das schon per VPN versucht -> Fehlanzeige, bleibt Berlin. Dann per Proxy. Dito. Da ich dort ja JS erlauben muss schlägt das ebenfalls auf meinen Rechner zurück und wird nicht auf dem Proxy selbst ausgeführt. Also wieder meine Einstellung "Berlin".

    Kennt einer eine Lösung? Ich habe aktuell nur eine und die kommt nicht in Frage: Rechner platt machen und mit anderen Zeit- und Ländereinstellungen neu installieren.

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Ok, hat sich erst mal erledigt. Ich merkte heute, dass ich das gar nicht brauche und mich eigentlich völlig verrannt hatte. Es geht ja um Silvesterdaten oder eben Zeitpunkte allgemein. Aber die sind ja immer gleich, egal welche Zeitzone.

    Wenn ich also in den USA anrufe und da einem sage: "He, in 10 Min ist Silvester in "Apia"", dann wird der das gleiche sagen und nicht, "nee, hier erst in 9 Stunden und 10 Minuten". Wir können das ja gemeinsam im TV ansehen, nur halt zu anderen lokalen Zeiten. << mein Denkfehler, über den ich die ganzen Wochen stolperte.

    Kompliziert ist der ganze Mist in Javascript aber schon, oder ich stelle mich wirklich saudoof an. Es gibt keine Möglichkeit, einfach die original Unix-Zeit zu bekommen, also den Timestamp vom 1.1.1970, den zu behalten und damit zu arbeiten. JS wandelt den immer wieder in die lokale Zeitzone um, wenn man den weiter bearbeiten will, z.B. T+10 Stunden setzen will. Ergebnis ist dann wieder GMT+1 und eine Zeit, die 9 Stunden anders ist, aber eben falsch. Ich fragte ja nach einem Tool. Habe keines gefunden, dann notgedrungen über Google gegangen und den Speedtest dort. Da gibt es ja einen Screenshot. Und eben auch dort. Die gleiche Uhrzeit wie bei mir, aber eben kein GMT+1, sondern GMT-8. Kann ja nicht sein. Mist Javascript, ich weiß warum ich das hasse.

    Und die Frage hier, warum ich das überhaupt testen wollte. Weil ich Fehler ausschließen wollte. Habe da z.B. einen gefunden. Der legte dann doch glatt mal den ganzen Browser lahm, wenn UTC+14 das neue Jahr erreichte.

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • toLocaleString hatte ich in der Tat schon in Verwendung, aber damit kam ich nicht sonderlich weit, weil ich ja den Timestamp brauche und keinen String. Dann mit den ganzen getUTCxxx versucht. Das ging an sich auch immer, aber sobald ein neues Date-Objekt gebildet werden musste, z.B. für eine weitere Zeitberechnung, einen Jahreswechsel oder was auch immer, dann hat mir das System irgendwie immer alles zerworfen. An sich passte das schon alles irgendwie, aber halt nur irgendwie. Da waren Timestamps um Stunden zu früh, dafür dann Zeitzonen Stunden zu spät. Im Grunde passte das dann aber schon wieder zusammen. Ließ sich aber leider nicht auf andere Umsetzen, denn deren "seltsames Erscheinen" zeigte sich anders.

    Mache das nun mit dem klassischen Date und getTime. Locale Zeitzone abziehen und fremde addieren. Wie gesagt, das hatte ich schon von Beginn an, ich verannte mich dann nur darin dass ich dachte ein Termin ist in einer anderen Zeit ja auch in einem anderen Moment. Aber nee, der Moment ist der gleiche, die Zeit ist nur eine andere ;)

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(