2012-01-24 7 views
2

My Appは文字列型の日付を含むJSONコードです。 (例えば、「2011-10-01」)。 NSDateにどのように変換できるのか知りたいですか? 「2011年10月1日」などの異なる時刻形式で表示する必要があります。NSDateへのObjective-C文字列(yyyy-mm-dd)

ex。このコードは機能しません。

NSString *date1 = @"2010-11-12"; 
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"yyyy-MMMM-dd"]; 
    NSDate *date2 = [dateFormat dateFromString:date1]; 
    NSString *strdate = [dateFormat stringFromDate:date2]; 
+0

を試すことができますか問題が 'strdate'がオリジナルと同じ書式で終わっているだけの場合は、同じフォーマッタを使用しているからです。 'strdate'が' date1'と違って見えるようにするには、別のフォーマットの2番目のフォーマッタを使います。 – Caleb

答えて

15

綱引きがhis blog post on the subjectで書いているように:

のObjective-CとiOS SDK日付 (マーシャリングおよびアンマーシャリング)をフォーマットするのに役立つクラスを提供し、このクラスはNSDateFormatterです。 No NSDateFormatterはUnicode Date Format パターンを使用します。この場合publicationDateがNSStringのある

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd"]; 
NSDate *date = [dateFormatter dateFromString:publicationDate ]; 
[dateFormatter release]; 

+0

ありがとうございます、今すぐ動作します。 – user973067

+0

ありがとうございます。 ARCでリリースラインは必要ありません。私のような将来のルーキーを助けるために。 –

+0

いずれかの通知をしたか、それとも私だけです、このコードは、日付を1減らします。 –

2

NSDateFormatterを使用してください。適切な方法はdateFromString:です。ドキュメントを見てみましょう:)

1

あなたは「動作しない」に手の込んだことはできますか?この

NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease]; 

[df setDateFormat:@"dd MM yyyy"];  

NSString *TodayString = [df stringFromDate:[NSDate date]]; 

NSDate *SomeDate=[NSDate date]; 

NSString *TargetDateString = [df stringFromDate:SomeDate]; 

NSLog(@"date:%@",TargetDateString);