NSDateComponents* 変数 = [NSDateComponents alloc];もちろん、必要に応じてinitで初期化し、autoreleaseでオートリリース設定をしておきます。そして、これに日時の要素の値を設定して時間の長さを指定していきます。それぞれの日時の要素は、以下のようなメソッドを使って設定することができます。
[《NSDateComponents*》 setEra:《NSInteger》];これらのメソッドを使って各要素の値を変更していくことで、時間の長さを作っていくことができるわけです。――例えば、「1ヶ月と2週間」という時間の長さを示すならば、「setMonth:1」と「setWeek:2」を呼び出して値を設定すればいいでしょう。これで、1ヶ月と2週間という時間の長さを示すNSDateComponentsが用意できます。
[《NSDateComponents*》 setYear:《NSInteger》];
[《NSDateComponents*》 setMonth:《NSInteger》];
[《NSDateComponents*》 setDay:《NSInteger》];
[《NSDateComponents*》 setHour:《NSInteger》];
[《NSDateComponents*》 setMinute:《NSInteger》];
[《NSDateComponents*》 setSecond:《NSInteger》];
[《NSDateComponents*》 setWeek:《NSInteger》];
[《NSDateComponents*》 setWeekday:《NSInteger》];
[《NSDateComponents*》 setWeekdayOrdinal:《NSInteger》];
[《NSDateComponents*》 setQuarter:《NSInteger》];
NSDate *変数 = [《NSCalendar*》 dateByAddingComponents:最後のoptions:は計算の際のオプション値で、普通はゼロを指定しておきます。これで引数のNSDateに、NSDateComponentsで指定した時間だけ加算した日時がNSDateで得られます。下のリスト欄に利用例を上げておきます。
《NSDateComponents*》 toDate:《NSDate*》
options:《NSUInteger》];
NSDateComponents *変数 = [《NSCalendar*》 components:《NSCalendarUnit》options:は例によって通常はゼロです。2つの日時をfromDate:とtoDate:に用意し、取り出す時間の単位をNSCalendarUnitで用意することで、指定した単位で時間の長さを得ることができるようになるのです。
fromDate:《NSDate*》 toDate:《NSDate*》 options:《NSUInteger》];
[NSCalendarUnit unit = NSWeekCalendarUnit|NSDayCalendarUnit;これで、週と日の2つの単位の組み合わせで時間の長さが得られるようになる、というわけです。これを利用すれば、いちいち「秒数をもとに何日あるか計算して……」なんてこともする必要はありません。実に便利ですね!
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
※今日から1ヶ月2週間後の日付を調べる int main (int argc, const char * argv[]) { @autoreleasepool { NSDate* date = [NSDate date]; NSDateComponents* dc = [[NSDateComponents alloc] init]; NSCalendar* calendar = [NSCalendar currentCalendar]; [dc setMonth:1]; [dc setWeek:2]; NSDate* date2 = [calendar dateByAddingComponents:dc toDate:date options:0]; NSLog(@"%@",date2); } return 0; } ※2001年元旦から今日まで何週間と何日あるか調べる int main (int argc, const char * argv[]) { @autoreleasepool { NSDate* date = [NSDate date]; NSDate* date2 = [NSDate dateWithString: @"2001-01-01 0:00:00 +9:00"]; NSCalendar* calendar = [NSCalendar currentCalendar]; NSCalendarUnit unit = NSWeekCalendarUnit | NSDayCalendarUnit; NSDateComponents* dc = [calendar components:unit fromDate:date2 toDate:date options:0]; NSLog(@"%ld週間と%ld日。",[dc week],[dc day]); } return 0; }
<< 前へ |