2015-01-21 2 views
-1

Я пытаюсь получить время дня из строки даты. Следующая строка должна вернуться в 12:00.NSDate возвращает нуль при преобразовании из строки

2010-08-24 00:00:00 +0000

Но используя следующий код, мой NSDate возвращает объект NIL, когда он достигает оператор журналу. В чем проблема? Благодаря!

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"h:mma"]; 
NSDate *date = [df dateFromString:@"2010-08-24 00:00:00 +0000"]; 
NSLog(@"DATE: %@", [date description]); 

Выход: ДАТА: (нуль)

+0

Его, потому что формат даты (String) ваш мимолетный doen't матч с форматом даты .... попробуйте использовать один и тот же формат даты .... –

+0

возможно дубликат [создать NSDate из строки] (http://stackoverflow.com/questions/9769190/create-a-nsdate-from-a-string) –

+1

Почему никто не советуется с документацией? –

ответ

1

Попробуйте это:

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"YYYY-MM-dd hh:mm:ss ZZZZ"]; 
NSDate *date = [df dateFromString:@"2010-08-24 00:00:00 +0000"]; 
NSLog(@"DATE: %@", [date description]); 

Ура!

Проверено на playgorund:

enter image description here

+0

Спасибо, но как я могу просто вернуть время суток? – Pheepster

+0

[дата NSDate]; // возвращает сегодня дату – D33pN16h7

+1

Указанный формат даты неверен. –

0

Ну вы можете использовать следующую процедуру для извлечения времени из строки даты

1.Get NSDate объекта в заданном формате.

2.Установите объект NSDateFormatter с требуемым форматом.

3.Введите строку даты в требуемом формате.

- (BOOL)application:(UIApplication *) 
application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
    { 
    NSString *date = [self convertDate:@"2010-08-24 00:00:00 +0000" 
          fromFormat:@"yyyy-MM-dd HH:mm:ss ZZZZ" 
           toFormat:@"hh:mm a"]; 

    NSLog(@"DATE: %@", [date description]); 

    return YES; 
} 


- (NSString *)convertDate:(NSString *)inDateString 
      fromFormat:(NSString *)fromFormat 
       toFormat:(NSString *)toFormat 
{ 
    NSDateFormatter *dateFormatter = nil; 
    NSString *outDateString = nil; 
    NSDate *date = nil; 

    dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:fromFormat]; 

    date = [dateFormatter dateFromString:inDateString]; 

    [dateFormatter setDateFormat:toFormat]; 
    outDateString = [dateFormatter stringFromDate:date]; 

    return outDateString; 
} 
+0

Ваш формат даты неверен (хотя и не так неправильно, как другие). –

Смежные вопросы