Se si sa che sarà di questo modulo (ISO 8601, wiki), è possibile analizzare con RegExp o metodi di stringa. Ecco un esempio RegExp che ti consente di utilizzare il fuso orario Z
, +hh
o +hh:mm
.
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)
fonte
2013-01-09 15:31:42
Qual è il tuo ambiente javascript? –
'fffZ' non è un fuso orario - il fuso orario è' Z' ([Zulu time] (http://en.wikipedia.org/wiki/Zulu_time), che significa UTC), e 'fff' sono tre decimali appartengono alla parte dei secondi ('ss.fff') - se prendi tutti e tre insieme, formano la parte dei millisecondi. – MvanGeest
Android 2.3 (Uso PhoneGap e ChildBrowser) –