Twitter APIのJSONデータで投稿日時(created_at)を扱う際の注意点

2008/12/02

先日Twitterのつぶやき取得方法をRSSからJSONに変更しましたが、この中でつぶやきの投稿日時を表す「created_at」のフォーマットが"曜日 月 日 時:分:秒 +0000 年"(例:"Mon Dec 01 14:24:26 +0000 2008")になっていて、月と日を取り出すのにSafariやFirefox、Google Chromeなどでは以下の手順でできていましたがIEではエラー(NaN)になることが分かりました。

:
var post_date = result[i]['created_at'];
var date = new Date(post_date);
var mon  = date.getMonth() + 1;
var day  = date.getDate();
:

よく考えたらDate()はそのフォーマットを認識できないはずなので、以下のような処理に変更してIEでもエラーにならないようにしました。

:
// 日時データを要素分解
var created_at = result[i]['created_at'].split(" ");

// 投稿日時変換 "Mon Dec 01 14:24:26 +0000 2008" -> "Dec 01, 2008 14:24:26"
var post_date  = created_at[1] + " "
               + created_at[2] + ", "
               + created_at[5] + " "
               + created_at[3];

// 日時データ処理
var date = new Date(post_date);     // 日付文字列 -> オブジェクト変換
date.setHours(date.getHours() + 9); // UTC -> JST (+9時間)
var mon  = date.getMonth() + 1;     // 月取得
var day  = date.getDate();          // 日取得