Как изменить 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.