UTCのNSDateをローカルタイムゾーンのNSDateにする

べべべべんと勉強中。

こまったときのstackoverflow.com

objective c - iOS: Convert UTC NSDate to local Timezone - Stack Overflow

やり方誰か知らね? と質問してくれている人がいた。


回答は何種類があるが、NSDateにカテゴリするのがかっこよさげなので使わせてもらう。

@implementation NSDate(Utils)

-(NSDate *) toLocalTime
{
  NSTimeZone *tz = [NSTimeZone defaultTimeZone];
  NSInteger seconds = [tz secondsFromGMTForDate: self];
  return [NSDate dateWithTimeInterval: seconds sinceDate: self];
}

-(NSDate *) toGlobalTime
{
  NSTimeZone *tz = [NSTimeZone defaultTimeZone];
  NSInteger seconds = -[tz secondsFromGMTForDate: self];
  return [NSDate dateWithTimeInterval: seconds sinceDate: self];
}

@end 


理解度20%ぐらいだが、カテゴリってすごい機能にみえる。JavaでいうならStringというクラスの名前のまま新しいメソッドを自分で定義できるようなもんだから、すごい便利と思う反面、もともとあるやつなのかわかんないから混乱する。知識が増えたらなんとなくわかるんだろうけどね。