Как изменить NSDateFormatter для строки - PullRequest
0 голосов
/ 14 октября 2011

У меня есть строка с полем даты.Я сохраняю поле как 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 ]

0 голосов
/ 14 октября 2011

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

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

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

0 голосов
/ 14 октября 2011

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

[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);
...