2011-06-29 8 views
0

je veux obtenir le fuseau horaire mais ne peux pas.iphone comment obtenir le fuseau horaire?

i utiliser NSLog est de montrer à moi est show.time = ici 2011-06-29 04:20:00 +0000

est mon code.

-(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

Il est pas clair ce que vous voulez. Où et comment voulez-vous afficher l'heure? –

+0

Salut, je veux afficher l'heure est show.time = 2011-06-29 12:28:00 +8000 comme ça. – ahyong87

+0

duplication possible de [Covert NSString vers NSDate dans un fuseau horaire différent] (http://stackoverflow.com/questions/910060/covert-nsstring-to-nsdate-in-a-different-timezone) –

Répondre

0

vous définissez le fuseau horaire de votre objet NSDateComponents GMT:

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

Ainsi votre date sera interprétée comme étant en GMT. Si vous voulez que le fuseau horaire que l'appareil est en, utilisez systemTimeZone:

[dateComps setTimeZone:[NSTimeZone systemTimeZone]]; 

En général, comme il est indiqué dans the docs for timeZoneWithAbbreviation:, les abréviations peuvent être ambiguës. Si vous voulez obtenir un fuseau horaire particulier d'une manière qui fonctionnera toujours peu importe l'emplacement de l'appareil, vous pouvez utiliser timeZoneForSecondsFromGMT:.

Vous pouvez également définir un fuseau horaire pour votre application, si vous voulez, plutôt que de toujours se référant à un fuseau horaire spécifique lors de la création d'objets liés à la date:

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