2010-07-25 8 views
1

2005 년 8 월 1 일의 NSDate는 어떻게 작성합니까? 인터넷에서 NSDateComponent를 발견했지만 너무 복잡해 보입니다.NSDate 질문

답변

6

또 다른 가능성은 NSDateComponentsNSCalendar입니다. 예를 들어 :

NSDateComponents *comps = [[NSDateComponents alloc] init]; 
[comps setYear:2000]; 
[comps setMonth:1]; 
[comps setDay:1]; 
[comps setHour:0]; 
[comps setMinute:0]; 
[comps setSecond:0]; 

NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDate *startDate = [cal dateFromComponents:comps]; 

[cal release]; 
[comps release];  
+0

AFAIK를 0으로 설정하는 데는 아무런 요점이 없습니다. – Chuck

+0

글쎄, 당신이 그렇게한다면, 그것은 의도를 보여줍니다 : "default"보다는 명시 적으로 00:00:00이되기를 원합니다. 의미는 약간 다릅니다. –

+0

기본값은 0으로 문서화되어 있지만, 나는 신경 쓰지 않을 것이다. (나는 체크하지 않았다) – jtbandes

4

무엇에 대해 :

[NSDate dateWithNaturalLanguageString:@"August 1st, 2005"]; 
+0

매우 재미 있습니다. – Fasid

+0

@Fasid : 나는 진지해. 위의 호출은 요청한 날짜를 반환합니다. – zneak

+0

흥미 롭습니다. 자동 완료가 실행되지 않았습니다. 비공개 API가 아니길 바래요? – Fasid

0

그것은 오히려 시간대에 따라 다르지만 GMT에서 자정 지난 일분에서 2005 년 8 월 1 일 1122854401. 그래서 당신이 쓸 수있는 UNIX 타임 스탬프는 ...이었다

[NSDate dateWithTimeIntervalSince1970:1122854401]; 
+0

계산 방법 1122854401 – Fasid

0

Introduction to Date and Time Programming Guide for Cocoa

NSDateComponents *components = [[NSDateComponents alloc] init]; 
[components setDay:1]; 
[components setMonth:8]; 
[components setYear:2005]; 
NSCalendar *gregorian = [[NSCalendar alloc] 
         initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDate *date = [gregorian dateFromComponents:components]; 
3
NSDateFormatter *myFormatter = [[NSDateFormatter alloc] init]; 
[myFormatter setDateFormat:@"M/d/yy"]; 
NSDate *myDate = [myFormatter dateFromString:@"August/01/05"]; 
0

이 날짜가 "이상한 8 월 2 일 또는 다른 장소에 7 월 31 일 (어쩌면 뭔가 것이라는 사실을 놓치지 마세요 ", 그레고리력을 사용하지 않을 때). 어쩌면 그게 너에게 쓸모가 없을지도 모르지. 그러나 당신은 이것을 알고 있어야합니다. 생각 하시겠습니까? 나는 너무 확신하지 못한다. 예를 들어 NSCalendar getting day difference wrong을 살펴보십시오.

인사말