Я пытаюсь выяснить, какой день (т.е. в понедельник, пятница ...) какой-либо определенной даты (т.е. 27 июня 2009 г.)Как найти то, что день недели для любой даты с использованием какао
Спасибо.
Я пытаюсь выяснить, какой день (т.е. в понедельник, пятница ...) какой-либо определенной даты (т.е. 27 июня 2009 г.)Как найти то, что день недели для любой даты с использованием какао
Спасибо.
Использование 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];
Где находится "comps"? Кроме того, технически @ThisThib правильно, что -weekday возвращает значение NSInteger. Не должно быть проблем для любого календаря, который я знаю, но во имя правильности и переносимости ... ;-) –
Вы можете посмотреть на классы 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];
Я делал:
NSDateFormatter* theDateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[theDateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4];
[theDateFormatter setDateFormat:@"EEEE"];
NSString *weekDay = [theDateFormatter stringFromDate:[NSDate date]];
Это дополнительный бонус позволяет вам выбрать, как вы хотите как день недели для возврата (путем изменения строки формата даты в setDateFormat: звонок
Больше всего в формирование у:
Вот что я завелся с, который работает точно так же, как предполагалось. Он принимает дату, изменяет дату, чтобы быть первым в месяц, и получает день этой даты:
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;
Пожалуйста, попробуйте отличить разницу между Objective-C и какао. Это совершенно возможно использовать один без другого, но в случае дат я предполагаю, что вы говорите о Какао. – dreamlax
Хотя они представляют собой разные сущности, возможно, проще использовать Objective-C без какао, чем наоборот. Даже если они будут использовать Cocoa от Python или что-то еще, вызовы классов и методов будут точно такими же. Кроме того, тег «object-c» не так активен, как Java или C#, и почти все, кто просматривает этот тег, заинтересованы в программировании на Mac или iPhone. –
Вы прочитали неотредактированный вопрос? Он не ссылался на Cocoa, поэтому редактирование и комментарий. Я думаю, что важно сделать различие так же, как люди должны с C++ и STL, C# и .NET и т. Д. – dreamlax