developer's diary

最近はc#のエントリが多いです

iOS(Objective-C)でtwitterより取得したcreated_atをyyyy/MM/dd形式に変換する

twitterより取得したcreated_at項目って変換しないと扱いずらいです。

Sat Jan 04 18:30:55 +0000 2014

というわけで、twitterより取得したjsonオブジェクトのcreated_at項目を指定のフォーマットで変換する関数を作ってみました。

- (NSString *)twitterCreatedAtToFormatString:(NSString * )dateString format:(NSString *)format {
    //引数をNSDateに変換
    NSDateFormatter *inputFormat = [[NSDateFormatter alloc] init];
    [inputFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];
    [inputFormat setDateFormat:@"eee MMM dd HH:mm:ss ZZZZ yyyy"];
    NSDate *date = [inputFormat dateFromString:dateString];

    //NSDateを文字列に変換
    NSDateFormatter *outputFormat = [[NSDateFormatter alloc] init];
    [outputFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"ja_JP"]];
    [outputFormat setDateFormat:format];
    return [outputFormat stringFromDate:date];
}

利用方法

NSString *inputStr = [tweetMessage objectForKey:@"created_at"];
NSLog(@"%@", outputStr); //-> "Sat Jan 04 18:30:55 +0000 2014"
NSString *outputStr = [self twitterCreatedAtToFormatString:inputStr format:@"yyyy/MM/dd HH:mm:ss"];
NSLog(@"%@", outputStr); //-> "2014/01/05 02:19:53"

以上。