UTC-Epoche in lokales Datum umrechnen

Ich habe mit diesem für ein bisschen jetzt kämpfen. Ich versuche, die Epoche in ein Datumsobjekt zu konvertieren. Die Epoche wird in UTC an mich gesendet. Wann immer man new Date() eine Epoche übergibt, wird angenommen, dass es sich um eine lokale Epoche handelt. Ich habe versucht, ein UTC-Objekt zu erstellen und dann setTime() zu verwenden, um es an die richtige Epoche anzupassen, aber die einzige Methode, die nützlich zu sein scheint, ist toUTCString() und Strings helfen mir nicht weiter. Wenn ich diesen String in ein neues Datum übergebe, sollte es merken, dass es UTC ist, aber das tut es nicht.

new Date( new Date().toUTCString() ).toLocaleString()

Mein nächster Versuch war, die Differenz zwischen der lokalen aktuellen Epoche und der aktuellen UTC-Epoche zu ermitteln, aber auch das gelang mir nicht.

new Date( new Date().toUTCString() ).getTime() - new Date().getTime()

Ich erhalte nur sehr kleine Differenzen, unter 1000, die in Millisekunden angegeben sind.

Irgendwelche Vorschläge?

Wollen Sie nur eine UTC-Zeichenkette in eine "lokale" Zeichenkette umwandeln? Das könnten Sie tun:

var utc_string = '2011-09-05 20:05:15';
var local_string = (function(dtstr) {
    var t0 = new Date(dtstr);
    var t1 = Date.parse(t0.toUTCString().replace('GMT', ''));
    var t2 = (2 * t0) - t1;
    return new Date(t2).toString();
})(utc_string);
Kommentare (1)

EDIT

var utcDate = new Date(incomingUTCepoch);
var date = new Date();
date.setUTCDate(utcDate.getDate());
date.setUTCHours(utcDate.getHours());
date.setUTCMonth(utcDate.getMonth());
date.setUTCMinutes(utcDate.getMinutes());
date.setUTCSeconds(utcDate.getSeconds());
date.setUTCMilliseconds(utcDate.getMilliseconds());

EDIT behoben

Kommentare (6)

@Amjad, gute Idee, aber schlecht umgesetzt. Versuchen Sie

Date.prototype.setUTCTime = function(UTCTimestamp) {
    var UTCDate = new Date(UTCTimestamp);
    this.setUTCFullYear(UTCDate.getFullYear(), UTCDate.getMonth(), UTCDate.getDate());
    this.setUTCHours(UTCDate.getHours(), UTCDate.getMinutes(), UTCDate.getSeconds(), UTCDate.getMilliseconds());
    return this.getTime();
}
Kommentare (0)