日付の処理+カレンダーを作る時のポイント
日付処理の検証
年、月、日付をそれぞれ別にして取得したい場合 - (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:];