Использование NSDate для получения дат - PullRequest
0 голосов
/ 22 августа 2010

Я пробовал это разными способами, но постоянно терпел неудачу, надеюсь, вы поможете мне достичь того, что я хочу сделать.

Я делаю приложение для iPad, у меня будет пять таблиц в одном представлении, и каждая таблица будет иметь дату в качестве заголовка / заголовка в этом формате, например. Понедельник 20

Эти пять столов будут с понедельника по пятницу. Это бит, который я не могу сделать. Я хочу определить текущую дату, а затем выделить таблицу, которая сегодня, очевидно, меняется каждый день.

Например, предположим, сегодня четверг, 9-е. Таблица четверга подсвечивается, а затем автоматически устанавливает дату других таблиц в четверг.

Подумайте о школьном расписании / планировщике / дневнике. С понедельника по пятницу каждый помечен своими датами.

РЕДАКТИРОВАТЬ: Так что, если я сделал это так? Если я добавлю это в код, который вы мне дали, если TRUE (кнопка нажата), добавьте семь дней, как в примере с Apple. Однако мой вопрос, что такое григорианский? чем мне его заменить? Я видел, что он использовал много на календарных образцах от Apple.

if (tableView == monTable){
        if(next == TRUE){
            [comps setDay:7];
            NSDate *date = [gregorian dateByAddingComponents:comps toDate:curDate  options:0];
        }
        else{
            [comps setWeekday:2];
        }
    }

Ответы [ 2 ]

3 голосов
/ 22 августа 2010

Вы можете получить даты с понедельника по пятницу следующим образом:

NSDate* curDate = [NSDate date]; // Get current date
NSCalendar* calendar = [NSCalendar currentCalendar];// Init calendar
NSDateComponents* comps = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit fromDate:curDate]; // Get necessary date components

    // Week days change from 1 to 7, Sunday is the 1st, Saturday - the last one.
for (int i = 2; i <= 6; i++){ 
    [comps setWeekday:i];
    NSDate *tDate = [calendar dateFromComponents:comps];
    NSLog(@"%@", tDate);
}

Чтобы определить, какую дату выделять (текущую дату), вам просто нужно проверить компонент дня недели.

Редактировать: Метод titleForHeaderInSection может выглядеть следующим образом:

- (NSString*) tableView:(UITableView *)tableView titleForHeaderInSection:(int)section{
    NSDate* curDate = [NSDate date]; // Get current date
    NSCalendar* calendar = [NSCalendar currentCalendar];// Init calendar
    NSDateComponents* comps = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit fromDate:curDate]; // Get necessary date components

    // Week days change from 1 to 7, Sunday is the 1st, Saturday - the last one.
    if (tableView == monTable)
        [comps setWeekday:2];
    if (tableView == tueTable)
        [comps setWeekday:3];
    if (tableView == wedTable)
        [comps setWeekday:4];
    if (tableView == thuTable)
        [comps setWeekday:5];
    if (tableView == friTable)
        [comps setWeekday:6];

    NSDate *tDate = [calendar dateFromComponents:comps];
    NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];
    [formatter setDateFormat:@"EEE, MMM d"];


    return [formatter stringFromDate:tDate];
}
0 голосов
/ 22 августа 2010
...