2011-12-15 55 views
1

任何人都知道如何在iOS 4.0之前的NSDate對象中設置時區?在iOS 4的和更大的I執行以下操作:如何在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具有方法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 
+0

這是關於NSCalendar,而不是NSDate。 – 2011-12-15 21:49:33

1

您應該NSCalendar對象使用setTimeZone:

相關問題