Как изменить NSDateFormatter для строки

У меня есть строка, в которой есть поле даты. Я сохраняю поле как NSString в моей базе данных, как 2011-12-07 21:15:00 +0000.

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

NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss.S"];

Я хочу вышеупомянутый формат даты в формате времени как чч, но он всегда дает ноль. Мой код:

    NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
    [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss.S"];

    NSDateFormatter *timeFormat = [[[NSDateFormatter alloc] init] autorelease];
    [timeFormat setDateFormat:@"hh a"];

    [dateFormat setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease] ];
    NSDate *date1 = [dateFormat dateFromString:startSection];

    NSLog(@"Date 1 : %@", date1);


    [timeFormat setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease] ];
    NSDate *time1 = [timeFormat dateFromString:startSection];
    NSString *strSection2 = [NSString stringWithFormat:@"%@", time1];
    NSLog(@"Time 1 : %@", strSection2); /// always null at this place.

Я не уверен, что я делаю здесь не так. Кто-нибудь может помочь мне здесь?

2 ответа

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

[dateFormat setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease] ];
NSDate *date1 = [dateFormat dateFromString:startSection];

NSLog(@"Date 1 : %@", date1);

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

[timeFormat setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease] ];
NSString * time = [timeFormat stringWithDate:date1];
NSLog(@"Time 1 : %@", time);

Твое свидание идет 2011-12-07 21:15:00 +0000 пока ваша formatString идет @"yyyy-MM-dd HH:mm:ss.S", ss.S здесь проблема Сделай это @"yyyy-MM-dd HH:mm:ss +S" и это сработает.

Что касается формата времени, я не уверен, что вы делаете. Вы явно передаете ему ту же строку (startSection) который даже не выглядит близко к hh a,

Обновление: О, и если я не ошибаюсь, форматирование следует этим соглашениям, что означает, что вы, вероятно, ищете Z, а не S.

Другие вопросы по тегам