티스토리 뷰
[Xcode에서 Obj-C] Foundation - 날짜,시간 클래스
NSDateComponents 객체 생성
기본메서드
getter |
setter |
설명 |
|
getter |
setter |
설명 |
year | setYear: | 년 |
| minute | setMinute: | 분 |
month | setMonth: | 월 |
| second | setSecond: | 초 |
day |
setDay: |
일 |
|
week |
setWeek: |
주 |
hour |
setHour: |
시 |
|
weekday |
setWeekday: |
요일 |
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setYear:2017];
[comps setMonth:2];
[comps setDay:21];
NSDateComponents 객체 생성시 모든 메서드를 설정할 필요는 없다.
설정되지 않으면 NSUndefinedDateComponent 라는 상태를 나타내는 값이 된다.
NSCalendar 객체 생성
메서드 | initWithCalendarIdentifier: |
형식 | - (id) initWithCalendarIdentifier: (NSCalendarIdentifier) ident; |
설명 | NSCalendar를 지정한 캘린더로 초기화 |
NSCalendar와 NSDateComponents를 사용해 NSDate 객체 생성
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setYear:2017];
[comps setMonth:2];
[comps setDay:21];
NSDate *date = [cal dateFromComponents:comps];
NSLog(@"%@", date);
// 2017-02-20 00:00:00 +0900
메서드 | dateFromComponents: |
형식 | - (NSDate *) dateFromComponents: (NSDateComponents *) comp; |
설명 | 지정한 NSDateComponents 객체로부터 NSDate 객체를 생성 |
NSDate를 NSDateComponents 객체 생성
NSDate *today = [NSDate date];
NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSUInteger flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit;
NSDateComponents *comps = [cal components:flags fromDate:today];
NSLog(@"year: %d", [comps year]); // year: 2017
NSLog(@"month: %d", [comps month]); // month: 2
NSLog(@"day: %d", [comps day]); // day: 20
NSLog(@"weekday: %d", [weekday objectAtIndex:[comps weekday] - 1]); // weekday: TUE
메서드 | components:fromDate: |
형식 | - (NSDateComponents *) components: (NSUinteger) unitFlags fromDate: (NSDate *) date; |
설명 | NSDate 객체로부터 지정한 필드를 가진 NSDateComponents를 생성 |
■ unitFlags 값
값 |
의미 |
값 |
의미 |
NSEraCalendarUnit |
시대 |
NSYearCalendarUnit |
연도 |
NSMonthCalendarUnit |
월 |
NSDayCalendarUnit |
일 |
NSHourCalendarUnit |
시 |
NSMinuteCalendarUnit |
분 |
NSSecondCalendarUnit |
초 |
NSWeekCalendarUnit |
주 |
NSWeekdayCalendarUnit |
요일 |
|
|
■ unitFlags 값의 중복처리
NSUInteger flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
날짜 계산 예시
1년 후의 요일 구하기
NSDate *today = [NSDate date];
NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *oneYear = [[NSDateComponents alloc] init];
[oneYear setYear: 1];
NSDate *newDate = [cal dateByAddingComponents:oneYear toDate:today options:0];
NSDateComponents *oneYearComp = [cal components:NSWeekdayCalendarUnit fromDate:newDate];
NSLog(@"%@", [weekdays objectAtIndex:[oneYearComp weekday] - 1]);
// WED
메서드 | dateByAddingComponents:toDate:options: |
형식 | - (NSDate *) dateByAddingComponents: (NSDateComponents *) comps toDate: (NSDate *) date options:(NSInteger)opts; |
설명 | NSDate 객체에 NSDateComponents 객체의 차이를 더해 새로운 NSDate 객체 반환 |
올해의 남은 일수 구하기
NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSInteger thisYear = [[cal components:NSYearCalendarUnit fromDate:today] year];
NSDateComponents *newYearDayComp = [[NSDateCOmponents alloc] init];
[newYearDayComp setYear:thisYear + 1];
[newYearDayComp setMonth:1];
[newYearDayComp setDay:1];
NSDate *newYearDay = [cal dateFromComponents:newYearDayComp];
NSDateComponents *diff = [cal components:NSDayCalendarUnit fromDate:today toDate:newYearDay options:0];
NSLog(@"%d day.", [diff day]);
메서드 | components:fromDate:toDate:options: |
형식 | - (NSDateComponents *) components: (NSInteger) unitFlags fromDate: (NSDate *) startDate toDate: (NSDate *) endDate |
설명 | fromDate와 toDate로 지정한 2개의 NSDate 객체의 차이를 나타내는 NSDateComponents 객체 생성 |
지정한 달의 일수 구하기
NSDateComponents *theDay = [[NSDateComponents alloc] init];
[theDay setYear:year];
[theDay setMonth:month + 1];
[theDay setDay:0];
NSDate *date = [cal dateFromComponents:theDay];
NSDateComponents *new = [cal components:NSDayCalendarUnit fromDate:date];
NSLog(@"year:%d month:%d -> %ddays", year, month, [new day]);
다음달 0일로 설정하면 구하려는 달의 마지막 날을 구할 수 있다.
개인적으로 공부하며 기억하기 위해 작성한 포스팅입니다.
이득을 위하여 작성된 포스팅이 아님을 알려드립니다.
'Objective C' 카테고리의 다른 글
[Xcode에서 Obj-C] Foundation - 컬렉션 클래스 (0) | 2017.02.21 |
---|---|
[Xcode에서 Obj-C] 터미널에서 실행 (0) | 2017.02.20 |
[Xcode에서 Obj-C] Foundation - 문자열 클래스 (0) | 2017.02.17 |
[Xcode에서 Obj-C] 포인터 (0) | 2017.02.15 |
[Xcode에서 Obj-C] 배열, 구조체 (0) | 2017.02.15 |
- Total
- Today
- Yesterday
- 에어캐나다
- google-services
- avds
- 카톡로그인
- FCMPlugin.gradle
- Gradle3.3
- 환승후기
- 에어캐나다후기
- 한인민박후기
- ionic
- ionic3
- 간편로그인
- 미국유심후기
- ionic2
- H2O유심후기
- 결혼준비그램
- 일리아스주얼리
- 내돈내산
- Android
- google-analytics
- 에어캐나다환승후기
- 한인민박
- 미국전화후기
- 뉴욕한인민박
- Cordova
- splashscreen
- 종로일리아스
- 에어캐나다 기내식
- 뉴욕호텔민박
- android_home
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |