しょぼしょぼプログラマ雑記

自分のための備忘録。 開発記録など掲載してます。 質問・ご意見・ご感想等はTwitter ( https://twitter.com/yun_hokuto ) までお気軽にどうぞ。

iOSにおける日付の扱い

システム開発において「時刻」は非常に重要ですが、慣れるまでは厄介です。

それはiOSであれ、Androidであれ、同じこと。

そんなiOSにおける日付の扱いで詳しい説明をされているサイト様を見つけたのでご紹介。

iOSでの時間を制する(NSDate, NSDateComponents) | Professional Programmer

こちらのサイト様でご紹介されている通り、「NSCalendar, NSDateCompoenents で得られたcomponentは現地時間になる」などの注意点まで細かく説明されています。

こちらの記事を元に、時差を取得する関数を考えると、こんなかんじでしょうか?
(メソッド内容は検証してませんので、ご利用される際は各自で動作チェックをお願いします)

+ (NSInteger)getTimeDifferenceBySystemTimeZone
{
    NSDate *date = [NSDate date];
    NSTimeZone *tz = [self getSystemTimeZone];
    NSInteger seconds = [tz secondsFromGMTForDate: date];
    NSInteger hour = (seconds / 60 / 60);
    return hour;
}

また、デバイスのロケールを取得する関数はこんな感じに・・・?
(メソッド内容は検証してませんので、(以下略 )

+ (NSLocale*)getDeviceLocale
{
    NSArray *languages = [NSLocale preferredLanguages];
    NSString *lang = [languages objectAtIndex:0];
    return [[NSLocale alloc] initWithLocaleIdentifier:lang];
}