NSDate를 사용하다 보면 unix timestamp형식으로 바꾼다던가, 년/월/일 정보를 가져온다던가 기타 등등 기능이 필요할 때가 있습니다.

그냥 NSDate에서 다 지원해주면 좋겠지만.. 안타깝게 그러진 않네요 -ㅁ-;

NSDate를 다른 형태의 데이터로 변환하는 방법을 정리 해 보았습니다.

1. NSDate to unix timestamp
NSDate의 timeIntervalSince1970를 이용하시면 됩니다.
예: 현재의 시간을 unix timestamp로 변환하기
int timestamp = [[NSDate date] timeIntervalSince1970];


2. unix timestamp to NSDate
NSDate의 dateWithTimeIntervalSince1970:를 이용하시면 됩니다.
예: 2009-06-26 10:51:39의 unix timestamp를 NSDate로 변환하기
NSDate *date = [NSDate dateWithTimeIntervalSince1970:1245981099];


3. NSDate to date component
이건 좀 복잡한데.. 년/월/일 시/분/초 를 구할 때 사용합니다. NSCalendar와 NSDateComponents를 이용하여 구합니다.
예: 2009-06-26 10:51:39의 unix timestamp로 NSDate객체 생성한 뒤 해당 객체를 년/월/일 시/분/초 로 분할하여 표시하기
NSDate *date;
NSDateComponents *com;
    
date = [NSDate dateWithTimeIntervalSince1970:1245980099];
com = [[NSCalendar currentCalendar] components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) fromDate:date];


4. date component to NSDate
년/월/일 시/분/초 로 부터 NSDate객체를 생성할 때 사용합니다. 마찬가지로 NSCalendar를 이용합니다.
예: 2009-06-26 10:51:39 시간을 가리키는 NSDate객체 생성하기
NSDate *date;
NSDateComponents *com;
NSDateFormatter *formatter;

com = [[NSDateComponents alloc] init];
[com setYear:2009];
[com setMonth:6];
[com setDay:26];
[com setHour:10];
[com setMinute:51];
[com setSecond:39];

date = [[NSCalendar currentCalendar] dateFromComponents:com];

formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSLog(@"%@", [formatter stringFromDate:date]);
[formatter release];
[com release];

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 장현준

2009/06/26 11:15 2009/06/26 11:15
, , ,
Response
No Trackback , 4 Comments
RSS :
http://b4you.net/blog/rss/response/231


블로그 이미지

빗소리를 먹는 사람.

- 장현준

Notices

Archives

Authors

  1. 장현준

Recent Trackbacks

  1. 듀얼클러치의 생각 rsvin28's me2DAY 2009

Calendar

«   2012/02   »
      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      

Site Stats

Total hits:
158010
Today:
80
Yesterday:
228