2016-09-02 2 views
0

Ich habe ein Datum in einem seltsamen Format und ich bin mir nicht sicher, wie man es in ein JS Date Object umwandeln kann. Ich bin sicher, Bibliotheken wie moment.js haben dafür Dienstprogramme, aber ich möchte nicht wirklich eine ganze Bibliothek nur für diese Konvertierung laden. Hier die Daten:Konvertieren von Datum in JS Date-Objekt

/Datum (1472586116588-0400)/

EDIT: Ich habe den Back-End-Code aktualisiert, um eine Zeichenfolge in der JSON verwenden statt einer C# Datum Zeit und dann ich konvertiere die Datetime wie folgt:

Date.ToString("s"); 

Dies wird mir diese Saite zu geben: 2016-09-02T10: 13: 12

so, jetzt ist mein Problem, wenn ich var Datum do = neues Datum ("2016-09-02T10: 13: 12"); Javascript gibt zurück:

Fr 2. September 2016 06.13.12 GMT-0400 (EDT)

Aber es soll mir geben:

Fr 2. September 2016 10.13.12 GMT-0400 (EDT)

Es scheint, die Zeitzonenumrechnung wird wie verdoppelt oder etwas? Weiß jemand, wie man das repariert?

+0

MDN-Dokumente [Datum] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) – Jecoms

+0

Soll das Unix-Timestamp sein? – Bwaxxlo

+0

var dateObject = neues Datum (1472586116588-0400); Willst du das? –

Antwort

0

Ich gehe davon aus das ist Millisekunden seit Beginn der Epoche mit einem hhmm versetzt, so dass ich tun würde:

var input = "/Date(1472586116588-0400)/"; 
 
var [match, msec, offset] = input.match(/\((\d+)([+-]\d+)\)/); 
 
var offsetHours = Math.floor(offset/100); 
 
var offsetMinutes = offset - offsetHours * 100; 
 
var date = new Date(msec - offsetHours * 60 * 60 * 1000 - offsetMinutes * 60 * 1000); 
 

 
console.log(date);

0

Fest von Back-End-Daten-String in ISO 8601 Format statt Wechsel von C# DateTime wie folgt:

date.ToString ("o");

Dies kann dann einfach in ein Javascript-Datum mit neuem Datum ({string here}) umgewandelt werden;

Dank an James Thorpe für die Empfehlung, JSON-Daten im Backend zu reparieren, anstatt sie zu hacken, damit sie auf das Frontend passen.

Verwandte Themen