JavaScript.Date オブジェクト初期化の文字列形式はブラウザによって対応が異なる

Date('日付') にまつわる話です。
YouTube-API 等で '2011-04-12T11:22:33.000Z' のような形式の日付文字列を取得した際、FirefoxChrome のようなブラウザではそのまま Date('2011-04-12T11:22:33.000Z') で正しく初期化されます。
しかし、SafariIE のようなブラウザでは不正な文字列が指定されたとして初期化されません
したがって、適切な文字列または数字の組み合わせに変換しなければなりません。
基本的には '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 オブジェクトの挙動に関する詳細記事はこちら