1

iOS 4.0 より前の NSDate オブジェクトでタイムゾーンを設定する方法を知っている人はいますか? iOS 4 以降では、次のようにします。

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 以降でしか利用できないことです。時間コンポーネントを減算する必要がありますか?

4

2 に答える 2

3

NSCalendar にはメソッドがありますsetTimeZone:

iOS 2.0 以降で利用できます。

受信機のタイム ゾーンを設定します。

- (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
于 2011-12-15T21:47:48.467 に答える
1

オブジェクトで使用する必要setTimeZone:がありNSCalendarます。

于 2011-12-15T21:49:12.747 に答える