1020 Stimmen

Abrufen der Zeitzone des Clients (und des Offsets) in JavaScript

Wie kann ich die Zeitzoneninformationen des Besuchers erfassen?

Ich brauche beides:

  1. die Zeitzone (z. B. Europa/London)
  2. und die Abweichung von UTC oder GMT (z. B. UTC+01)

0voto

pluto Punkte 17

Einmal hatte ich diese "einfache" Aufgabe und ich habe (new Date()).getTimezoneOffset() - der Ansatz, der hier allgemein vorgeschlagen wird. Es stellte sich jedoch heraus, dass die Lösung nicht ganz richtig war. Aus einigen undokumentierten Gründen in meinem Fall new Date() kehrte zurück GMT+0200 wenn new Date(0) kehrte zurück GMT+0300 was richtig war. Seitdem benutze ich immer

(new Date(0)).getTimezoneOffset() um eine korrekte Zeitverschiebung zu erhalten.

-1voto

philk Punkte 1849

Warum nicht einfach verwenden:

function timezoneOffset(date: Date) {
  return 6000 * ((date.getUTCHours() - date.getHours()) * 60 + ((date.getUTCMinutes() - date.getMinutes())))
}

-1voto

Hier ist die Lösung für die Suche nach dem TimezoneOffset der entfernten Länder, indem die Zeitzone einfach an die Funktion übergeben wird. In diesem Beispiel ist 'Asia/Calcutta' die Zeitzone

function getTimezoneOffset(timezone) {
    LocalDate = new Date();
    LocalDate.setMilliseconds(0);

    const LocalOffset = LocalDate.getTimezoneOffset();
    RemoteLocaleStr = LocalDate.toLocaleString('en-US', {timeZone: timezone});
    RemoteDate = new Date(RemoteLocaleStr);
    diff = (LocalDate.getTime()-RemoteDate.getTime()) / 1000 / 60 ;

    RemoteOffset = LocalOffset + diff;
    return RemoteOffset;
}
console.log(getTimezoneOffset('Asia/Calcutta'));

-4voto

Dayachand Patel Punkte 443

Sie müssen nur moment.js und jstz.js einbinden

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jstimezonedetect/1.0.6/jstz.min.js"></script>

und danach

<script>
$(function(){
 var currentTimezone = jstz.determine();
 var timezone = currentTimezone.name();
 alert(timezone);
});

</script>

-5voto

Alexander Punkte 1

Das ist eine sehr gute Arbeit für mich:

// Translation to offset in Unix Timestamp
let timeZoneOffset = ((new Date().getTimezoneOffset())/60)*3600;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X