Как мне конвертировать из NSString в NSDate, используя NSDateFormater - PullRequest
1 голос
/ 13 января 2012

У меня есть эта строка: 2012-01-12T21:01:00 и этот код:

    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    [df setDateFormat:@"yyyy-MM-dd hh:mm:ss a"];
    NSDate* arrivalTime=[df dateFromString:field_arrival_time];

Но возвращается nil. Какой формат даты мне использовать для разбора этой строки?

Ответы [ 2 ]

1 голос
/ 13 января 2012

Ваша строка 2012-01-12T21:01:00 содержит литерал T (по крайней мере, я считаю, что это литерал, он, кажется, не обозначает часовой пояс).Вы должны включить это в свой формат даты.

[df setDateFormat:@"yyyy-MM-dd'T'hh:mm:ss"];

Обратите внимание на отсутствие a в формате даты, для его использования потребуется, чтобы в вашей входной строке использовались AM или PM с предшествующим пробелом.Для получения дополнительной информации о специальных символах с NSDateFormatter ознакомьтесь с Руководством по форматированию даты , уделяя дополнительное внимание Фиксированным форматам .

Редактировать:В вашей входной строке не указан часовой пояс, вероятно, он будет интерпретироваться как UTC и будет локализован в часовом поясе вашего компьютера, когда вы выводите его через NSLog().

0 голосов
/ 13 января 2012

Я много пробовал на твоей струне, но так и не получил результата. только ноль показывает на консоли. но когда я удаляю символ "T" из вашей строки, это дает идеальный результат.

[f setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [f dateFromString:@"2012-01-12 21:01:00"];
NSLog(@"date %@", date);
NSDateFormatter *f2 = [[NSDateFormatter alloc] init];
[f2 setDateFormat:@"dd-MM-yyyy"];
NSString *s = [f2 stringFromDate:date];
NSLog(@"S %@", s);
/// OutPut : S 12-01-2012
...