2011-01-20 10 views

答えて

4

あなたはNSDateComponentsになります。

int y = 2011; 
int m = 1; 
int d = 15; 


NSDateComponents *dc = [[NSDateComponents alloc] init]; 
[dc setYear:y]; 
[dc setMonth:m]; 
[dc setDay:d]; 

NSLog(@"%@: %@", [[dc date] class], [dc date]); 
+1

+1は原則的には正解ですが、実装が間違っています。 'NSDateComponents'には' -date'メソッドはありませんが、 'NSCalendar'を使ってNSDateに変換することができます。 –

+0

'NSDateComponents'クラスのドキュメント(iOS 4.2ドキュメントセット)を二重チェックし、' calendar'メソッドと 'day'メソッドの間に' -date'メソッドを表示します。何か不足していますか? – Eimantas

+0

ああ、私はMac OS X 10.6ドックセットをチェックしました。そして、 'NSDateComponents'は実際に' -date'メソッドを持っていません。質問はiOSタグを持っているので、私はそれがココアタッチのためだと考えました。 – Eimantas

0

NSDateFormatterは、日付に日付文字列を解析するためUnicode Standardを使用しています。だから、日付文字列にあなたの整数をフォーマットし、それを解析するために使用するとNSDateFormatter:

// assume year, month and day are integers that are formatted properly and don't 
// include invalid ranges 
NSString* dateString = [NSString stringWithFormat:@"%04d %02d %02d", year, month, day]; 
NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; 
// Choose a format of YEAR MONTH DATE per the standard 
[formatter setDateFormat:@"yyyy MM dd"]; 
NSDate* date = [formatter dateFromString:dateString]; 
[formatter release]; 

あなたはどんな形式にフォーマット文字列を設定することができますすることは限り、あなたは(上記のリンク)Unicode標準を使用して、あなたのボートを浮かびます整数を同じ形式に変換します(明らかに)。

+0

あなたはYYYY ... YYYY ...大文字があなたに狂ったISO週カレンダー、iircを与えてもらいたいかもしれません。 –

+0

@Catfish_Manあなたが正しいです、私はISOの年の週番号ではなく、yyyyの数字を意味しました!ありがとう! –