日付の処理+カレンダーを作る時のポイント

日付処理の検証

年、月、日付をそれぞれ別にして取得したい場合  
  - (NSDateComponents )components:(NSCalendarUnit)unitFlags fromDate:(NSDate )date;メソッドを使う

解説
- (NSDateComponents *)components:(NSCalendarUnit)年 | 月 | 日 | fromDate:年月日を取り出したい日付;

//今日の日付を取得したい場合
NSDate *today = [NSDate date];</br> 
###日付の処理

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:today];
    

    NSLog(@"today : %@",today);

    NSLog(@"day   :%ld",components.day);

    NSLog(@"month :%ld",components.month);

    NSLog(@"year  :%ld: ",components.year);

結果

2017-04-09 20:54:59.683 myCalendar[40300:2824145] today : 2017-04-09 11:54:59 +0000
2017-04-09 20:54:59.684 myCalendar[40300:2824145] day   :9
2017-04-09 20:54:59.684 myCalendar[40300:2824145] month :4
2017-04-09 20:54:59.684 myCalendar[40300:2824145] year  :2017: 

上記作成したcomponentsの年月日をしてしてみる

components.day = 1;

NSDate *whichDateOfMonth = [[NSCalendar currentCalendar] dateFromComponents:components];
    NSLog(@"%@",whichDateOfMonth);

結果

2017-04-09 20:54:59.683 myCalendar[40300:2824145] 2017-03-31 15:00:00 +0000

そして次の場合

components.day = 20;
components.month = 5;

NSDate *whichDateOfMonth = [[NSCalendar currentCalendar] dateFromComponents:components];
    NSLog(@"%@",whichDateOfMonth);

結果

2017-04-09 20:54:59.683 myCalendar[40300:2824145] 2017-05-19 15:00:00 +0000

NSDate *whichDateOfMonth = [[NSCalendar currentCalendar] dateFromComponents:components]; NSLog(@“%@”,whichDateOfMonth);


その月の日数を取得する 

NSInteger numberOfWeeks = [[NSCalendar currentCalendar] rangeOfUnit:NSCalendarUnitWeekOfDay //日 inUnit:NSCalendarUnitMonth//月の forDate:firstDateOfMonth //この日を含む].length //数;

メソッドの訳(この日を含む月の中の日数をNSIntegerで取り出して)



[カレンダーを作る]()にアクセスしてますか?
###カレンダーを作る時
1.今日の日付を取得</br>
2.今日の日付を年、月、日というように要素ごとに取り出す
3.今月が何日から始まるかを取得(普通に一日)</br>


2. 上記 - (NSDateComponents *)components:(NSCalendarUnit)unitFlags fromDate:(NSDate *)date;メソッドを使う</br></br>

解説</br>
- (NSDateComponents *)components:(NSCalendarUnit)年 | 月 | 日 | fromDate:年月日を取り出したい日付;

[[NSCalendar currentCalendar] dateFromComponents:];