неправильное время дать при выполнении кода - PullRequest
0 голосов
/ 03 февраля 2012

Я создаю простое приложение-будильник.Проблема в том, что я получаю неправильные выходные даты в журналах, и я не знаю почему.Пожалуйста, попробуйте решить мою проблему.Ниже приведен мой код:

Следующий код используется в методе init, затем работает правильно, пока я использую следующий код в моем viewdidLoad, тогда он не работает

    NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];

// 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];


NSDateComponents *dateComps = [[NSDateComponents alloc] init];
[dateComps setDay:[dateComponents day]];
[dateComps setMonth:[dateComponents month]];
[dateComps setYear:[dateComponents year]];
[dateComps setHour:[timeComponents hour]];

[dateComps setMinute:[timeComponents minute]];
[dateComps setSecond:[timeComponents second]];
NSDate *itemDate = [calendar dateFromComponents:dateComps];
        NSLog(@"date components are:>>%@",dateComps);
NSLog(@"Item date is ::>>%@",itemDate);


[dateComps release];

В то время как объект печатичем это показывает неправильную дату и проблему часового пояса здесь.Пожалуйста, помогите решить эту проблему

@ samuel

Ответы [ 2 ]

0 голосов
/ 09 февраля 2012

после многих поисков, найдя причину этого

Когда любая дата выбирается в pickerviewcontroller, всегда только пятерки +000 gmt формат

Если нам нужно преобразовать дату с местным часовым поясом для этого, нам нужно использовать класс dateformater в проект для этого кода ниже.

NSDateFormatter* df_local = [[NSDateFormatter alloc] init];
[df_local setTimeZone:[NSTimeZone localTimeZone]];
[df_local setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
// [df_local stringFromDate:date];

NSString *strForArr=[self.arForSubTitle objectAtIndex:0];
NSString *newStr = [strForArr substringToIndex:[strForArr length]-5];
NSDate *theDate = [df_local dateFromString:newStr];        

NSLog(@"%@",[theDate description]);

Спасибо и всего наилучшего

@samuel.

0 голосов
/ 03 февраля 2012

Попробуйте ввести:

NSDate *pickerDate = [NSDate date];

, чтобы убедиться, что это не проблема с вашим кодом.Если после этого вы получите правильную дату в NSLog, значит, ваш код в порядке, и проблема может быть в элементе управления UIDatePicker, который вы, возможно, используете?Итак, попробуйте выполнить

NSDate *pickerDate = [self.datePicker date];
NSLog(@"Date = %@", pickerDate);

, чтобы убедиться, что вы в первую очередь получаете правильные значения из элемента управления выбора даты.

Этот код должен быть помещен в ваш метод viewDidLoad.Я точно скопировал ваш код сверху, и он отлично работает в моем приложении.

Вопрос: Вы говорите, что ваш код отлично работает в init , но некорректно работает в методе viewDidLoad?

...