2011-12-07 54 views
3

我有一个字符串,需要将其转换为日期,但它不能正确转换。我不知道为什么......我的代码是:NSDateFormatter不转换我的NSString NSDate

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) 

回答

12

我认为与其格式字符串yyyy-MM-dd HH:mm:ss.ZZZ,你会想yyyy-MM-dd HH:mm:ss.SSS

ZZZ将是一个时区值,而SSS是小数秒。

Unicode documentation(从苹果公司的文档链接上Data Formatting

编辑:一两件事:你不需要有行NSDate *dateFromString = [[NSDate alloc] init];。请拨打NSDate *dateFromString = [dateFormatter dateFromString:fecha];。日期格式化程序将根据需要分配日期对象。

+1

比您不需要拥有该行更重要的是,它会导致内存泄漏。 –