NSDateFormatter не конвертирует мою строку NSString в NSDate - PullRequest
3 голосов
/ 07 декабря 2011

У меня есть строка, и мне нужно конвертировать ее в дату, но она не конвертируется правильно. Я не знаю почему ... мой код:

NSString * fecha = @"2011-12-07 11:11:29.657";

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

NSDate *dateFromString = [[NSDate alloc] init]; 
dateFromString = [dateFormatter dateFromString:fecha]; 

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
unsigned units = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;

NSDateComponents *components = [calendar components:units              
                                           fromDate:dateFromString];
 NSInteger* hour = [components hour];
 NSInteger* minute = [components minute];
 NSInteger* second = [components second];  

NSLog(@"Fecha: %@",fecha);
NSLog(@"Format: %@",dateFormatter.dateFormat);
NSLog(@"date: %@",dateFromString);

В моем журнале:

2011-12-07 11:36:11.750 Catalogo-V1[13741:207] Fecha: 2011-12-07 11:11:29.657
2011-12-07 11:36:11.750 Catalogo-V1[13741:207] Format: yyyy-MM-dd HH:mm:ss.ZZZ
2011-12-07 11:36:11.751 Catalogo-V1[13741:207] date: (null)

Ответы [ 2 ]

12 голосов
/ 07 декабря 2011

Я думаю, что вместо строки формата yyyy-MM-dd HH:mm:ss.ZZZ вам понадобится yyyy-MM-dd HH:mm:ss.SSS.

ZZZ будет значением часового пояса, тогда как SSS - это доли секунды.

См. Документация по Unicode (по ссылке из документации Apple по Форматирование данных )

Редактировать: еще одна вещь: вам не нужна строка NSDate *dateFromString = [[NSDate alloc] init];.Просто позвоните NSDate *dateFromString = [dateFormatter dateFromString:fecha];.Устройство форматирования даты будет выделять объект даты так, как ему нужно.

4 голосов
/ 07 декабря 2011

ZZZ - это формат часового пояса, он ищет что-то вроде CET, а не дробную часть секунд. Вы хотите SSS

@"yyyy-MM-dd HH:mm:ss.SSS"

http://unicode.org/reports/tr35/tr35-10.html#Date_Format_Patterns

...