547 Stimmen

UTC-Datumszeit in lokale Datumszeit umrechnen

Vom Server erhalte ich eine Datetime-Variable in diesem Format: 6/29/2011 4:52:48 PM und es ist in UTC-Zeit. Ich möchte sie mit JavaScript in die Zeitzone des Browsers des aktuellen Benutzers umwandeln.

Wie lässt sich dies mit JavaScript oder jQuery bewerkstelligen?

46voto

Nobita Punkte 23039

Sie sollten den (UTC-)Offset (in Minuten) des Clients erhalten:

var offset = new Date().getTimezoneOffset();

Und dann addieren oder subtrahieren Sie die Zeit, die Sie vom Server erhalten.

Ich hoffe, das hilft.

27voto

Ben Bryant Punkte 2985

Setzen Sie diese Funktion in Ihrem Kopf ein:

<script type="text/javascript">
function localize(t)
{
  var d=new Date(t+" UTC");
  document.write(d.toString());
}
</script>

Erstellen Sie dann für jedes Datum im Textkörper Ihrer Seite Folgendes:

<script type="text/javascript">localize("6/29/2011 4:52:48 PM");</script>

Um die GMT und die Zeitzone zu entfernen, ändern Sie die folgende Zeile:

document.write(d.toString().replace(/GMT.*/g,""));

22voto

huha Punkte 3552

Dies ist eine vereinfachte Lösung auf der Grundlage der Antwort von Adorjan Princ:

function convertUTCDateToLocalDate(date) {
    var newDate = new Date(date);
    newDate.setMinutes(date.getMinutes() - date.getTimezoneOffset());
    return newDate;
}

oder einfacher (allerdings wird dabei das ursprüngliche Datum verändert):

function convertUTCDateToLocalDate(date) {
    date.setMinutes(date.getMinutes() - date.getTimezoneOffset());
    return date;
}

Verwendung:

var date = convertUTCDateToLocalDate(new Date(date_string_you_received));

16voto

Marzieh Mousavi Punkte 391

Wenn Sie 2021-12-28T18:00:45.959Z Format können Sie dies in js verwenden:

// myDateTime is 2021-12-28T18:00:45.959Z

myDate = new Date(myDateTime).toLocaleDateString('en-US');
// myDate is 12/28/2021

myTime = new Date(myDateTime).toLocaleTimeString('en-US');
// myTime is 9:30:45 PM

Sie müssen nur Ihre Gebietsbezeichnung anstelle von "en-US" eingeben (z. B. "fa-IR").


Sie können auch die Optionen für toLocaleTimeString like { Stunde: '2-stellig', Minute: '2-stellig' }

myTime = new Date(myDateTime).toLocaleTimeString('en-US',{ hour: '2-digit', minute: '2-digit' });
// myTime is 09:30 PM

mehr Informationen für toLocaleTimeString y toLocaleDateString

16voto

pabloa98 Punkte 622

Fügen Sie am Ende die Zeitzone hinzu, in diesem Fall "UTC":

theDate = new Date( Date.parse('6/29/2011 4:52:48 PM UTC'));

Danach verwenden Sie toLocale ()* Funktionsfamilien zur Anzeige des Datums im richtigen Gebietsschema

theDate.toLocaleString();  // "6/29/2011, 9:52:48 AM"
theDate.toLocaleTimeString();  // "9:52:48 AM"
theDate.toLocaleDateString();  // "6/29/2011"

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