2011-06-29 46 views
0

我想獲得時區,但不能。iphone如何獲得時區?

我使用的NSLog是節目對我來說是show.time = 2011-06-29四點20分00秒+0000

這裏是我的代碼。

-(IBAction)Save:(id)sender{ 
    NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar]; 
    //[calendar setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]]; 
    // Get the current date 
    NSDate *pickerDate = [self.datePicker date]; 

    // Break the date up into components 
    NSDateComponents *dateComponents = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) 
                fromDate:pickerDate]; 
    NSDateComponents *timeComponents = [calendar components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) 
                fromDate:pickerDate]; 

    // Set up the fire time 
    NSDateComponents *dateComps = [[NSDateComponents alloc] init]; 
    [dateComps setDay:[dateComponents day]]; 
    [dateComps setMonth:[dateComponents month]]; 
    [dateComps setYear:[dateComponents year]]; 
    [dateComps setHour:[timeComponents hour]]; 
    // Notification will fire in one minute 
    [dateComps setMinute:[timeComponents minute]]; 
    [dateComps setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]]; 
    //[dateComps setSecond:[timeComponents second]]; 



    timedata = [calendar dateFromComponents:dateComps]; 
    [dateComps release]; 

    DataClass *obj=[DataClass getInstance]; 

    obj.showdate = timedata; 

    //NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

    //[defaults setObject:timedata forKey:@"selectdate"]; 
    //NSLog(@"save time = %@",obj.showdate); 

    [self dismissModalViewControllerAnimated:YES]; 
} 
+0

目前尚不清楚你想要什麼。你在哪裏以及如何顯示時間? –

+0

嗨,我想顯示的時間是show.time = 2011-06-29 12:28:00 + 8000這樣。 – ahyong87

+0

[隱藏NSString到NSDate在不同時區]的可能重複(http://stackoverflow.com/questions/910060/covert-nsstring-to-nsdate-in-a-different-timezone) –

回答

0

你設置時區爲您NSDateComponents對象GMT:

[dateComps setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]]; 

因此,你的日期將被解釋爲GMT之中。如果您希望該設備在時區,使用systemTimeZone

[dateComps setTimeZone:[NSTimeZone systemTimeZone]]; 

在一般情況下,在the docs for timeZoneWithAbbreviation:指出,縮寫可以是不明確的。如果您想以某種方式獲取特定時區,無論設備的位置如何,您都可以使用timeZoneForSecondsFromGMT:

您還可以設置時區爲您的應用程序,如果你想要,而不是創建日期相關的對象時,總是提到一個特定的時間段:

[NSTimeZone setDefaultTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:60*8]]; 
NSTimeZone * appTZ = [NSTimeZone defaultTimeZone];