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?

567voto

digitalbath Punkte 6524

Anhängen von 'UTC' an die Zeichenkette vor der Umwandlung in ein Datum in Javascript:

var date = new Date('6/29/2011 4:52:48 PM UTC');
date.toString() // "Wed Jun 29 2011 09:52:48 GMT-0700 (PDT)"

293voto

Hulvej Punkte 3455

Meiner Meinung nach sollten Server im allgemeinen Fall immer eine Datetime in der standardisiertes ISO 8601-Format .

Mehr Informationen hier:

In diesem Fall würde der Server Folgendes zurückgeben '2011-06-29T16:52:48.000Z' die direkt in das JS-Date-Objekt einfließen würde.

var utcDate = '2011-06-29T16:52:48.000Z';  // ISO-8601 formatted date returned from server
var localDate = new Date(utcDate);

El localDate in der richtigen Ortszeit, die in meinem Fall zwei Stunden später wäre (DK-Zeit).

Usted wirklich Sie müssen nicht all dieses Parsing durchführen, das die Sache nur verkompliziert, solange Sie genau wissen, welches Format Sie vom Server erwarten.

152voto

Adorjan Princz Punkte 11524

Dies ist eine universelle Lösung:

function convertUTCDateToLocalDate(date) {
    var newDate = new Date(date.getTime()+date.getTimezoneOffset()*60*1000);

    var offset = date.getTimezoneOffset() / 60;
    var hours = date.getHours();

    newDate.setHours(hours - offset);

    return newDate;   
}

Verwendung:

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

Anzeige des Datums basierend auf den lokalen Einstellungen des Clients:

date.toLocaleString();

84voto

PramodB Punkte 669

Bei mir haben die oben genannten Lösungen nicht funktioniert.

Beim IE ist die Umrechnung von UTC-Datum und -Zeit in die lokale Zeit etwas knifflig. Für mich ist die Datumszeit aus der Web-API '2018-02-15T05:37:26.007' und ich wollte, wie pro lokale Zeitzone konvertieren, so dass ich unten Code in JavaScript verwendet.

var createdDateTime = new Date('2018-02-15T05:37:26.007' + 'Z');

49voto

Molp Burnbright Punkte 579

Das funktioniert bei mir:

function convertUTCDateToLocalDate(date) {
    var newDate = new Date(date.getTime() - date.getTimezoneOffset()*60*1000);
    return newDate;   
}

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