2010年12月14日火曜日

RSS2.0 の pubDate に入ってる日付を NSDate に変換したい。

Objective-C での変換のはなし。 Xcode 3.2.5 and iOS SDK 4.2.1 で試してる。
文字列の日付を NSDate に変換します。


こんな感じで。
  1. NSString *stringPubDate = @"Tue, 30 Nov 2010 06:54:00 +0000";  
  2.    
  3. NSDateFormatter *formatter = [[NSDateFormatter alloc] init];  
  4. [formatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZZZ"];  
  5. NSDate *pubDate = [formatter dateFromString:stringPubDate];  
  6. [formatter release];  
  7.    
  8. NSLog(@"%@", pubDate);  



EEEを探すのに苦労した。
記号の一覧がまとまってるサイトを探してたけど、見つけられなかった。

EEEが見つかる前は仕方ない、こんな感じにしようと思った。
  1. NSString *stringPubDate = @"Tue, 30 Nov 2010 06:54:00 +0000";  
  2.   
  3. NSArray *splitDate = [stringPubDate componentsSeparatedByString:@", "];  
  4.   
  5. NSDictionary *weekDict = [NSDictionary dictionaryWithObjectsAndKeys:  
  6.         @"月", @"Mon",  
  7.         @"火", @"Tue",  
  8.         @"水", @"Wed",  
  9.         @"木", @"Thu",  
  10.         @"金", @"Fri",  
  11.         @"土", @"Sat",  
  12.         @"日", @"Sun",nil];  
  13.            
  14. NSDateFormatter *formatter = [[NSDateFormatter alloc] init];  
  15. [formatter setDateFormat:@"dd MMM yyyy HH:mm:ss ZZZZ"];  
  16. NSDate *pubDate = [formatter dateFromString:[splitDate objectAtIndex:1]];  
  17. [formatter release];  
  18.     
  19. NSLog(@"%@ %@曜日", pubDate, [weekDict objectForKey:[splitDate objectAtIndex:0]]);  


ついでなので、NSDate から文字列に変換してみる。
  1. NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];  
  2. [dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"Asia/Tokyo"]];  
  3. [dateFormatter setDateFormat:@"yyyy年MM月dd日HH時mm分ss秒"];  
  4. NSString *stringPubDate = [dateFormatter stringFromDate:pubDate];  
  5. [dateFormatter release];  
  6.    
  7. NSLog(@"pubDate [ %@ ] [ %@ ]", pubDate, stringPubDate);  

0 件のコメント:

コメントを投稿