2009-06-29 7 views
12

내가 무슨 요일 (예 : 월요일, 금요일 ...) 특정 날짜 (예 : 6 월 27 일, 2009)코코아

을 알아 내려고 노력하고있어를 사용하여 특정 날짜에 대한 무슨 요일 찾는 방법 고맙습니다.

+0

목표 - C와 코코아의 차이를 구별하기 위해 시도하십시오. 다른 하나없이 하나를 사용하는 것이 완벽하게 가능 합니다만, 날짜의 경우 나는 당신이 코코아에 대해 이야기하고 있다고 가정합니다. – dreamlax

+0

그들은 별개의 엔티티이지만 Cocoa없이 Objective-C를 사용하는 것이 틀림없이 더 쉽습니다. Python에서 Cocoa를 사용한다고해도 클래스와 메서드 호출은 완전히 동일합니다. 또한 "objective-c"태그가 Java 또는 C#과 같이 활성화되어 있지 않으며이 태그를보고있는 모든 사용자는 Mac 또는 iPhone 프로그래밍에 관심이 있습니다. –

+0

수정되지 않은 질문을 읽었습니까? 그것은 코코아에 대한 어떠한 언급도하지 않았으므로 편집과 논평을합니다. 사람들이 C++ 및 STL, C# 및 .NET 등으로 구분해야하는 것과 마찬가지로 구별을하는 것이 중요하다고 생각합니다. – dreamlax

답변

6

NSCalendar 및 NSDateComponents를 사용하십시오. NSDateComponents 문서에 나타낸 바와 같이 :

NSCalendar *gregorian = [[NSCalendar alloc] 
initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDate *date = [gregorian dateFromComponents:comps]; 
NSDateComponents *weekdayComponents = [gregorian components:NSWeekdayCalendarUnit fromDate:date]; 
int weekday = [weekdayComponents weekday]; 
+1

"comps"는 어디에서 왔습니까? 또한, 기술적으로 @ThisThib는 -weekday가 NSInteger 값을 반환한다는 것이 맞습니다. 내가 아는 어떤 캘린더에서도 문제가되지 않아야한다. 그러나 정확성과 이식성의 이름으로 ...-) –

16

당신은있는 NSDate 및 NSCalendar 클래스에 모습을 가질 수있다. 예를 들어 , here 그리고 그들은 다음과 같은 코드를 제공

here :

NSDate *today = [NSDate date]; 
NSCalendar *gregorian = [[NSCalendar alloc] 
         initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDateComponents *weekdayComponents = 
       [gregorian components:(NSDayCalendarUnit | NSWeekdayCalendarUnit) fromDate:today]; 
NSInteger day = [weekdayComponents day]; 
NSInteger weekday = [weekdayComponents weekday]; 
28

내가 해왔은 :

NSDateFormatter* theDateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[theDateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4]; 
[theDateFormatter setDateFormat:@"EEEE"]; 
NSString *weekDay = [theDateFormatter stringFromDate:[NSDate date]]; 

이 어떻게하면 좋겠시키는의 추가 보너스를 선택했다 반환되는 평일과 같이 (setDateFormat의 날짜 형식 문자열을 변경하여)

형성에 :

http://developer.apple.com/documentation/Cocoa/Conceptual/DataFormatting/Articles/dfDateFormatting10_4.html#//apple_ref/doc/uid/TP40002369

-1

여기에 내가 의도 한대로 정확히 어떤 작품과 함께 상처거야. 그것은 날짜를 걸리는 월의 첫 번째가 될 날짜를 변경하고, 해당 날짜의 가져옵니다

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:date]; 
NSDateComponents *monthDateComponents = [[NSCalendar currentCalendar] components: NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear | 
             NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate: date]; 

// build date as start of month 
monthDateComponents.year = components.year; 
monthDateComponents.month = components.month; 
monthDateComponents.day = 1; 

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; 
// [gregorian setFirstWeekday:1]; 

NSDate *builtDate =[gregorian dateFromComponents: monthDateComponents]; 
// NSDateComponents *weekdayComponents =[gregorian components: NSCalendarUnitWeekday fromDate: builtDate]; 

NSDateFormatter *df = [NSDateFormatter new]; 
[df setDateFormat:@"E"]; 

NSString *firstDay = [df stringFromDate:builtDate]; 
if([firstDay isEqual:@"Sun"]) // do for the other 6 days as appropriate 
    return 7;