JavaScript.Date オブジェクト初期化の文字列形式はブラウザによって対応が異なる
Date('日付') にまつわる話です。
YouTube-API 等で '2011-04-12T11:22:33.000Z' のような形式の日付文字列を取得した際、Firefox や Chrome のようなブラウザではそのまま Date('2011-04-12T11:22:33.000Z') で正しく初期化されます。
しかし、Safari や IE のようなブラウザでは不正な文字列が指定されたとして初期化されません。
したがって、適切な文字列または数字の組み合わせに変換しなければなりません。
基本的には '2011/04/12 11:22:33' の形式にしておけば問題ありません。
これを正規表現でクールに変換したいところですが、難しいので string.replace(searchValue, replaceValue) メソッドで以下のように地道に変換していきます。
var dateString = '2011-04-12T11:22:33.000Z'; // UTC dateString = dateString.replace('T', ' '); // 'T' を半角スペースで置換 dateString = dateString.replace('.000Z', ''); // '.000Z' を削除 dateString = dateString.replace(/-/g, '/'); // 全ての '-' を '/' で置換 date = new Date(dateString); // UTC date.setHours(date.getHours() + 9); // +09:00(JST)
Date オブジェクトの挙動に関する詳細記事はこちら。