2011-08-11 16 views
2

I次のコードを持っている:dateFromStringは、間違った日付を返します

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    formatter.dateFormat = @"yyyy-mm-dd"; 
    NSDate *cDate = [formatter dateFromString:thisLine]; 
    NSLog(@"cDate '%@' thisLine '%@'", cDate, thisLine); 

のNSLogプリント: CDATE '2011-01-10 5時07分○○秒0000' thisLine '2011-07-10' ながら、 cDateは '2011-07-10'にする必要があります

おかげ

答えて

8

NSDate descriptionは常に一般+000時間帯のために、独自のフォーマットで日付を印刷します。正しい形式の日付を取得するには、日付形式を使用し、MM for month not mmを使用する必要があります。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
formatter.dateFormat = @"yyyy-MM-dd"; 
NSDate *cDate = [formatter dateFromString:thisLine]; 
NSLog(@"cDate '%@' thisLine '%@'", [formatter stringFromDate:cDate], thisLine); 

- (NSStringの*)説明
議論
表現は、オペレーティングシステムの異なるリリース間 一定に維持することが保証されません。 日付をフォーマットするには、あなたが代わりに日付フォーマッタオブジェクトを使用する必要があります

+0

書式の問題と日付指定の問題の両方に対処したOPの-1を説明してください。 – Joe

+0

問題は印刷形式ではなく、月が7に設定されていないということです。 – SSteve

+0

@SSteveはい。しかし、OPはどちらを指定したのか指定しませんでした。 OPは彼が '2011年7月10日'に2つの部分があると予想していると言った – Joe

12

小文字mmMM大文字の月の使用、数分ではないか月間です:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    formatter.dateFormat = @"yyyy-MM-dd"; 
    NSDate *cDate = [formatter dateFromString:thisLine]; 
    NSLog(@"cDate '%@' thisLine '%@'", cDate, thisLine); 
+0

おかげで美しい( NSDateFormatterとデータの書式ガイドを参照)!すべてを説明する – saman01

+0

! thnx! – stellz

関連する問題