2011-12-15 12 views
1

iOS 4.0より前のNSDateオブジェクトにタイムゾーンを設定する方法は誰にも分かりますか? iOS 4と大きなでは、私は次のようにします。iOS 3.xで日付のタイムゾーンを設定する方法

NSCalendar *calendar = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]; 
NSDateComponents *components = [calendar components:(NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekdayCalendarUnit|NSDayCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit|NSTimeZoneCalendarUnit) fromDate:aDate]; 
NSTimeZone *gmt = [NSTimeZone timeZoneForSecondsFromGMT:0]; 
[components setTimeZone:gmt]; 
NSDate *newDate = [calendar dateFromComponents:components]; 

問題がある、とはsetTimeZone NSTimeZoneCalendarUnitは、iOS 4.0で始まるのみ使用可能です。私は時間のコンポーネントの減算を行う必要がありますか?

答えて

3

NSCalendarは方法のiOS 2.0以降で利用可能setTimeZone:

を持っています。

レシーバのタイムゾーンを設定します。

- (void)setTimeZone:(NSTimeZone *)tz 

例:

NSCalendar *calendar = [NSCalendar currentCalendar]; 
[calendar setTimeZone:[NSTimeZone timeZoneWithName:@"America/Jamaica"]]; 
NSLog(@"calendar timezone: %@", calendar.timeZone); 

のNSLog出力:

カレンダーのタイムゾーン:

:アメリカ/ジャマイカ(EST)は-18000

またはタイムゾーンオフセットとオフセット

NSCalendar *calendar = [NSCalendar currentCalendar]; 
[calendar setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; 
NSLog(@"calendar timezone: %@", calendar.timeZone); 

のNSLog出力:

calendar timezone: GMT (GMT) offset 0 
+0

これはNSDateではなくNSCalendar上にあります。 –

+0

@Bored: 'NSDate'にはタイムゾーンがありません。 –

+0

Cool。例をありがとう。 – user1060816

1

あなたはNSCalendarオブジェクトにsetTimeZone:を使用する必要があります。

関連する問題