Web上にあるサンプルはタイムラインを要求した場合のものなので、単純に真似てもうまくいきません。
NSDateFormatter* inFormat = [[NSDateFormatter alloc] init];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[inFormat setLocale:locale];
[locale release];
[inFormat setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss Z"];
NSDate *date = [inFormat dateFromString:createAt];
[inFormat release];
変数「createAt」にTwitterから取得した「create_at」が入っているものと仮定しています。上のコードを実行するとdateに「create_at」が指している日付オブジェクトが格納されます。
Twitterから返ってくるcreated_atの値は「Mon, 23 May 2011 12:23:50 +0000」といった値なのだけど、Web上にあるコード例(タイムライン要求時)だと「Mon May 23 12:23:50 +0000 2011」という形式を想定しているのでそのままでは動かない。
とにかく「Mon, 23 May 2011 12:23:50 +0000」という形で返ってくるのでNSDateFormatterには「EEE, dd MMM yyyy HH:mm:ss Z」としなくてはいけない。
また、忘れてはいけないのがNSLocaleで「en_US」を指定すること(多分、en_**なら何でも良さそうだけど試してません)。
こうしないと「Mon」や「May」といった英語表記をうまく拾ってくれません。
海外のサンプルコードだとNSDateFormatterの末尾を「+0000」としているものがあるけれど、こうするとロケールを「en_US」にしているのでNSDateも米国時間で作られてしまう。なので「Z」としてやることで、日本の環境では日本時間になるよう指定します。
0 件のコメント:
コメントを投稿