Angenommen, Sie dieses Format für alle Termine garantieren kann, wird der folgende Code genügen:
const datetime = '7/14/2016 2:40 PM +00:00'; // this is what your service returns
const pieces = datetime.split(/[/: ]/);
if (pieces[3] == 12) pieces[3] = 0; // fixes edge case for 12 AM/PM
const hours = pieces[5] === 'PM' ? Number(pieces[3]) + 12 : pieces[3];
const d = new Date(Date.UTC(pieces[2], pieces[0] - 1, pieces[1], hours, pieces[4]));
console.log(datetime); // prints "7/14/2016 2:40 PM +00:00"
console.log(d); // prints Date 2016-07-14T14:40:00.000Z
EDIT: Es gibt ein paar Grenzfälle mit nicht korrekt behandelt, nämlich 00.00/PM, etc., aber diejenigen, kann leicht auch herum bearbeitet werden.
EDIT2: Für diesen Randfall berücksichtigt.
EDIT3: Wie ein Kommentar angegeben, wird dies nur für UTC-Zeiten funktionieren. Wenn die empfangene Zeichenfolge einen Offset aufweisen kann, funktioniert dies nicht.
'+00: 00 'Ist es nicht schon in UTC? –
Sie überdenken das ... –
Ja, es ist in UTC, aber dieses Datum soll in Lokal konvertiert werden. Wenn diese Zeichenfolge übergeben wird, wird der Fehler ausgegeben. Invalid Date – aswininayak