Wenn Sie wissen, dass es diese Form haben wird (ISO 8601, wiki), können Sie es mit RegExp oder String-Methoden analysieren. Hier ist ein RegExp-Beispiel, mit dem Sie die Zeitzone Z
, +hh
oder +hh:mm
verwenden können.
var dateString = '2013-01-08T17:16:36.000Z';
var ISO_8601_re = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.(\d{3}))?(Z|[\+-]\d{2}(?::\d{2})?)$/,
m = dateString .match(ISO_8601_re);
var year = +m[1],
month = +m[2],
dayOfMonth = +m[3],
hour = +m[4],
minute = +m[5],
second = +m[6],
ms = +m[7], // +'' === 0
timezone = m[8];
if (timezone === 'Z') timezone = 0;
else timezone = timezone.split(':'), timezone = +(timezone[0][0]+'1') * (60*(+timezone[0].slice(1)) + (+timezone[1] || 0));
// timezone is now minutes
// your prefered way to construct
var myDate = new Date();
myDate.setUTCFullYear(year);
myDate.setUTCMonth(month - 1);
myDate.setUTCDate(dayOfMonth);
myDate.setUTCHours(hour);
myDate.setUTCMinutes(minute + timezone); // timezone offset set here, after hours
myDate.setUTCSeconds(second);
myDate.setUTCMilliseconds(ms);
console.log(myDate); // Tue Jan 08 2013 17:16:36 GMT+0000 (GMT Standard Time)