このフォーム(ISO 8601、wiki)の場合は、RegExpまたは文字列メソッドを使用して解析できます。次に、タイムゾーンZ
,+hh
または+hh:mm
を使用できるようにするRegExpの例を示します。
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)
JavaScriptの環境は何ですか? –
'fffZ'はタイムゾーンではなく、タイムゾーンは' Z'([Zulu時間](http://en.wikipedia.org/wiki/Zulu_time)、UTCを意味します)、 'fff'は3つの小数です秒の部分( 'ss.fff')に属しています - 3つすべて一緒にすると、それらはミリ秒の部分を形成します。 – MvanGeest
Android 2.3(PhoneGapとChildBrowserを使用) –