2010-12-04 14 views
2

これは私を夢中にさせてくれました。NSDateFromatterが適切なMMMM値を与えていない

これをテストするための新しいプロジェクトを作成しました。環境はxcode 3.2.5がシミュレータで実行され、デバイス上で同じ結果が得られます。

私は日付フォーマッタを作成し、フォーマットを設定して文字列を渡すと、何かが日付フォーマッタで動作しません。

int tmpMonth = 11; 
int tmpYear = 2010; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];  
[dateFormatter setDateFormat:@"m/d/yyyy"]; 
NSString *dateAsString = [[NSString alloc] initWithFormat:@"%d/23/%d",tmpMonth,tmpYear]; 
NSDate *theDate = [[NSDate alloc] initWithTimeInterval:0 sinceDate:[dateFormatter dateFromString:dateAsString]]; 
[dateFormatter setDateFormat:@"MMMM d, yyyy"]; 
NSLog(@"%@",[dateFormatter stringFromDate:theDate]); 
[dateFormatter setDateFormat:@"m/d/yyyy"]; 
NSLog(@"%@",[dateFormatter stringFromDate:theDate]); 
[dateFormatter release]; 
[theDate release]; 
[dateAsString release]; 

これは、この出力になり:

[Session started at 2010-12-03 17:47:04 -0600.] 
2010-12-03 17:47:05.274 wtfDateFormatter[18970:207] January 23, 2010 
2010-12-03 17:47:05.277 wtfDateFormatter[18970:207] 11/23/2010 

これは私のアプリの他の部分でうまく働いているように私は、私はそれをフォーマットMMMMを与えたときに、なぜそれが1月を印刷しているかわかりません、別のNSDateソースを使用するだけです。

答えて

3

文字列を解釈して生成するために、月番号に「m」を使用しています。残念ながら、「m」は分です。代わりに 'M'を使用してください。

+0

。それはそれだった。私はこれを長らく見てきたことを知っていた – AtomRiot

1

tmpMonthを12に設定した場合の出力はどのくらいですか?私は1月に滞在するのか、2月に切り替えるのかと思いますか?

関連する問題