Próbuję dowiedzieć się co dzień (tj poniedziałek, piątek ...) z danym terminie (tj cze 27th, 2009)Jak znaleźć co dzień tygodnia dla danej daty użyciem kakao
Dziękuję Ci.
Próbuję dowiedzieć się co dzień (tj poniedziałek, piątek ...) z danym terminie (tj cze 27th, 2009)Jak znaleźć co dzień tygodnia dla danej daty użyciem kakao
Dziękuję Ci.
Użyj NSCalendar i NSDateComponents. Jak pokazano w dokumentacji NSDateComponents:
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date = [gregorian dateFromComponents:comps];
NSDateComponents *weekdayComponents = [gregorian components:NSWeekdayCalendarUnit fromDate:date];
int weekday = [weekdayComponents weekday];
Skąd się bierze "comps"? Również technicznie @ThisThib ma rację, że -dzień tygodnia zwraca wartość NSInteger. Nie powinien stanowić problemu dla żadnego kalendarza, jaki znam, ale w imię poprawności i przenośności ... ;-) –
Możesz zajrzeć do klas NSDate i NSCalendar. Na przykład here i here
Zapewniają one następujący kod:
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];
Robiłem:
NSDateFormatter* theDateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[theDateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4];
[theDateFormatter setDateFormat:@"EEEE"];
NSString *weekDay = [theDateFormatter stringFromDate:[NSDate date]];
To dodatkowy bonus pozwalając wybrać sposób, że podobnie jak dzień powracający do poprzedniego dnia (zmieniając ciąg formatu daty w setDateFormat: zadzwoń
Dużo więcej w formacja pod adresem:
Oto co z likwidacji, który działa dokładnie tak, jak zamierzał. Zajmuje datę, zmienia datę do pierwszego dnia miesiąca, a dostaje dni od tej daty:
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;
Spróbuj odróżnić różnicę między Objective-C i Cocoa. Jest całkowicie możliwe używanie jednego bez drugiego, ale w przypadku dat zakładam, że mówisz o kakao. – dreamlax
Chociaż są to odrębne byty, prawdopodobnie łatwiej jest używać Objective-C bez kakao niż na odwrót. Nawet gdyby użyli Cocoa z Python lub cokolwiek innego, klasy i wywołania metod byłyby dokładnie takie same. Ponadto znacznik "object-c" nie jest tak blisko, jak Java czy C#, i prawie każdy, kto ogląda ten tag, jest zainteresowany programowaniem na Maca lub iPhonie. –
Czy przeczytałeś niezatwierdzone pytanie? Nie odnosiło się to do kakao, stąd edycja i komentarz. Myślę, że ważne jest, aby odróżnić, tak jak ludzie powinni z C++ i STL, C# i .NET, itp. – dreamlax