Установка даты UIDatePicker с помощью NSDateFormatter - PullRequest
3 голосов
/ 04 января 2012

Я пытаюсь инициализировать UIDatePicker с датой, которая была возвращена мне из этого средства выбора ранее в моем сеансе. Это часть программы инвентаризации, которая должна получить дату последней калибровки элемента инвентаризации.

Используя этот код, я получаю строку даты / времени:

NSDate *choice = [pickedDate date];
calDate = [[NSString alloc] initWithFormat:@"%@", choice];

Я получаю следующую строку в calDate: 2011-11-11 21:56:38 + 0000

Я пытаюсь настроить свой сборщик дат следующим кодом:

NSDate *date = [[[NSDate alloc] init] retain];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSLog(@"cal date = %.@.",drawingInfo.drawingDate);
if([calDate length] != 0) {
    date = [dateFormatter dateFromString:calDate];

    if(date != nil) {
            [pickedDate setDate:date animated:NO];
    }
}

NSLog проверяет, что строка все еще в такте. Если я ставлю точку останова на if (date! = Nil), она показывает, что date = nil.

Заранее спасибо.

1 Ответ

7 голосов
/ 04 января 2012

Вам не хватает спецификатора формата Z в формате даты.

Этот код:

NSString *calDate = @"2011-11-11 21:56:38 +0000";
NSDate *date = [[[NSDate alloc] init] retain];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];

[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];  
//                                   right here    ^

date = [dateFormatter dateFromString:calDate];

NSLog(@"date:%@", date);

Выходы:

2012-01-03 20:14:15.258 Craplet[38753:707] date:2011-11-11 21:56:38 +0000

Без Z:

[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

Выводит:

2012-01-03 20:16:10.456 Craplet[38885:707] date:(null)

Если формат не может быть сопоставлен со строкой даты, возвращается nil

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...