iphone, как получить часовой пояс? - PullRequest
0 голосов
/ 29 июня 2011

Я хочу получить часовой пояс, но не могу.

Я использую NSLog, это шоу для меня, это show.time = 2011-06-29 04: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];
}

1 Ответ

0 голосов
/ 29 июня 2011

Вы устанавливаете часовой пояс для вашего объекта NSDateComponents на GMT:

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

Таким образом, ваша дата будет интерпретироваться как GMT.Если вы хотите часовой пояс, в котором находится устройство, используйте systemTimeZone:

[dateComps setTimeZone:[NSTimeZone systemTimeZone]];

В целом, как отмечено в документах для timeZoneWithAbbreviation:, сокращения могут быть неоднозначными,Если вы хотите получить определенный часовой пояс таким образом, чтобы он всегда работал независимо от местоположения устройства, вы можете использовать timeZoneForSecondsFromGMT:.

Вы также можете установить часовой пояс для своего приложения, если хотите, вместо того, чтобы всегда ссылаться на определенный часовой пояс при создании объектов, связанных с датой:

[NSTimeZone setDefaultTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:60*8]];
NSTimeZone * appTZ = [NSTimeZone defaultTimeZone];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...