'NSDateComponents'에 해당되는 글 2건

  1. 2011.10.28 NSDate를 이용하여 D-Day 계산.
  2. 2011.10.20 NSDate NSDateComponents

NSDate를 이용하여 D-Day 계산.

Dev/iOS 2011. 10. 28. 01:35


NSDate * date = [NSDate dateWithNaturalLanguageString:@"0000-00-00"];
NSDate * dDay = [NSDate dateWithNaturalLanguageString:@"0000-00-00"];

NSDateComponents * com = [[NSCalendar currentCalendar] components:NSDayCalendarUnit
                                                                                           fromDate:date 
                                                                                                toDay:dDay
                                                                                              options:0]; 
NSLog(@"day = %d", [com day]);
 

출처 : http://blog.daum.net/dmz7881/8873170

 

'Dev > iOS' 카테고리의 다른 글

Table View 관련  (0) 2011.10.28
HTML5로 아이폰앱 만들기  (0) 2011.10.28
iOS 텍스트 관련.  (0) 2011.10.24
인터페이스 빌더에서 오브젝트의 경계선 보이게 하기  (0) 2011.10.24
graph 관련 라이브러리  (0) 2011.10.22
:

NSDate NSDateComponents

Dev/iOS 2011. 10. 20. 14:33


NSDate중 날짜 부분만을 변경 하거나 시간 부분만을 변경할 일이 필요해졌다.
NSDate에서 직접 변경은 불가능.
다음과 같은 방법으로 변경 해야한다. 

    
NSCalendar * cal = [NSCalendar currentCalendar];
 
    NSCalendarUnit unit = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit;
 
    NSDateComponents * comps = [cal components:unit  fromDate:birthDate];
 
    NSDateComponents * newComps = [cal components:unit fromDate:time];
    
    // 날자 부분을 변경해야 할 경우.
    [comps setYear:newComps.year];
    [comps setMonth:newComps.month];
    [comps setDay:newComps.day];

    // 시간 부분을 변경해야 할 경우. 
    [comps setHour:newComps.hour];
    [comps setMinute:newComps.minute];
    
    [self setBirthDate:[cal dateFromComponents:comps]];
    [self.tableView reloadData];
 
    
    [comps release];
    [newComps release];
    [cal release];

------ 위 코드 대로 하면 프로그램이 죽는다. -> release하는 코드 삭제 후 정상 동작한다. 아직 메모리 관리에 관련되 충분한 이해가 없다.


* NSDate로 부터 year, month, day 에 해당하는 int값 얻기.

NSDate *today = [NSDate date];

NSDateFormatter *dateFormatter = [[NSDateFormatter allocinit];

NSLocale *locale               = [[NSLocale allocinitWithLocaleIdentifier:@"en_US"];

[dateFormatter setLocale:locale];

[locale release];

// Get year

[dateFormatter setDateFormat:@"yyyy"];

int year = [[dateFormatter stringFromDate:today] intValue];

// Get Month

[dateFormatter setDateFormat:@"MM"];

int month = [[dateFormatter stringFromDate:today] intValue];

// Get Day

[dateFormatter setDateFormat:@"dd"];

int day = [[dateFormatter stringFromDate:today] intValue];

[dateFormatter release];




------------

출처 : Bingsoo blog ( http://bingsoo.com/blog/?p=3708 )

NSDate의 시간 값 초기화/비교

Friday, December 10th, 2010

NSDate의 date method로 현재 날짜를 얻거나 UIDatePick의 date로 설정한 날짜를 얻어오는 경우, time부분을 옵션에서 꺼 놓았다 해도 현재 시각이 기록되는 문제가 발생한다. 두 개의 NSDate의 차이를 계산하는 경우 시간 때문에 정확한 계산이 이루어지지 않는데, 아래와 같은 방법으로 해결할 수 있다.

NSDate *date1, *date2가 있을 때

?
1
2
3
4
5
6
7
8
[gregorian rangeOfUnit:NSDayCalendarUnit
             startDate:&date1
              interval:NULL
               forDate:date1];
[gregorian rangeOfUnit:NSDayCalendarUnit
             startDate:&date2
              interval:NULL
               forDate:date2]; 

를 사용하면 각각 변수의 시간 정보가 그 날의 시작시간(beginning of the day)로 초기화된다. 최종 적으로

?
1
2
3
4
5
6
7
8
int result = 0;
NSCalendar *gregorian =
    [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
 
result =  [[gregorian components:NSDayCalendarUnit
                                   fromDate:date1
                                     toDate:date2
                                        options:0] day];

를 통해 시간 값이 상관 없이 두 NSDate 사이에 며칠의 차이가 있는지 구해낼 수 있다.


'Dev > iOS' 카테고리의 다른 글

tapku 달력 라이브러리 튜토리얼.  (0) 2011.10.22
xcode Update 후 빌드가 오류.  (0) 2011.10.21
테이블 화면이 안나타는 현상.  (0) 2011.10.20
NSDate 데이터 조작 방법.  (0) 2011.10.18
[링크]OpenCoverflow  (0) 2011.10.11
: