2011-12-07 12 views
3

文字列があり、それを日付に変換する必要がありますが、正しく変換されません。私のログでNSDateFormatterはNSDateのNSStringを変換しません

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

たい。

ZZZはタイムゾーン値ですが、SSSは分数秒です。

Unicode documentationData FormattingにAppleのドキュメントからリンクされている)を参照してください

編集:1つの他の事:あなたが行NSDate *dateFromString = [[NSDate alloc] init];を持っている必要はありません。 NSDate *dateFromString = [dateFormatter dateFromString:fecha];に電話するだけです。日付フォーマッタは、必要に応じて日付オブジェクトを割り当てます。

+1

そのような行を持つ必要はないので、メモリリークが発生します。 –

4

ZZZは、タイムゾーンの形式である、それはCETのようなものではないの小数部分を探しています秒。あなたは、私が代わりにフォーマット文字列yyyy-MM-dd HH:mm:ss.ZZZの、あなたがyyyy-MM-dd HH:mm:ss.SSSをしたいとは思わSSS

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

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

関連する問題