Как заполнить UIPicker текущим днем ​​недели + дата, - PullRequest
0 голосов
/ 06 января 2011

Я ищу какой-нибудь код, который позволил бы заполнять мой uipicker следующим образом Мы говорим здесь о двух компонентах. 1-й компонент требует ДЕНЬ и ДАТА 2-й компонент, который я могу обработать.

| Среда 20 | 2 часа дня |
| Четверг 21 | 13:00 |
| И т.д. ...

Я могу справиться со вторым компонентом, я просто не могу найти пример кода для форматирования первого компонента. Я понимаю, что мне нужно было бы сначала определить сегодняшний день, затем ДАТУ, а затем собрать оттуда, но надеялся, что у кого-то может быть какой-то пример кода, похожего на этот. Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

3 голосов
/ 06 января 2011

Из-за отсутствия какого-либо другого пути или лучшего способа сделать это.Я положил это вместе.Он создает массив форматированных дат, как я и хотел.Это не красиво, но я не мог найти лучший способ сделать это.Вы могли бы подумать, что цикл FOR было бы проще установить последние 2 символа в отформатированной дате, но у него были свои причуды, и я не хочу тратить час, пытаясь исправить это, поэтому я выбрал легкий уродливый выход.

Приведенный ниже код создает форматированный массив Day & Date, например:
Среда 5-го
Четверг 6-го
Пятница 7-го
и т. Д.
Начиная с сегодняшнего дняи дата.

- (void)createDatesForPicker {


    daysForPicker = [[NSMutableArray alloc] initWithCapacity:0];
    formatedDaysForPicker = [[NSMutableArray alloc] initWithCapacity:0];

    //get todays Day & Date
    NSDate *today1 = [NSDate date];
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"EEEE dd"];

    //change how many days out you want to go here I am going 14 days out
    for (int i=0; i<14; i++){

        NSCalendar *gregorian11 = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];  

        NSDateComponents *components1 = [gregorian11 components:NSWeekdayCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:today1];
        [components1 setDay:([components1 day]+i)];

        NSDate *beginningOfWeek1 = [gregorian11 dateFromComponents:components1];
        NSDateFormatter *dateFormat_weekend = [[NSDateFormatter alloc] init];
        [dateFormat_weekend setDateFormat:@"EEEE dd"];
        NSString *dateString_first = [dateFormat_weekend stringFromDate:beginningOfWeek1];

        // unformatted dates array
        [daysForPicker addObject:dateString_first];

    }

    // now we have all the days and date, so lets format them so they look good 
    for (int i=0; i<[daysForPicker count];i++) {
        NSString * currentDay = [NSString stringWithFormat:@"%@",[daysForPicker objectAtIndex:i]];

        //we have date now look at 2nd to last digit and check if it is a zero, if so remove it.
        NSUInteger count = [currentDay length]-1;
        NSRange r = NSMakeRange( count,1 );
        NSString * lastChar = [currentDay substringWithRange:r];



        if ([lastChar isEqual:@"0"] == TRUE ) {
            //replace it with nothing
        }
        else {
            //not a zero at the end so we are good to remove all zeros
            currentDay = [currentDay stringByReplacingOccurrencesOfString:@"0" withString:@""]; 
        }

        //used later for date formatting
        NSUInteger count2 = [currentDay length]-2;
        NSRange r2 = NSMakeRange( count2,2 );
        NSString * dateDigits = [currentDay substringWithRange:r2];

        if ([dateDigits isEqual:@" 1"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"st"];
        }
        if ([dateDigits isEqual:@" 2"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"nd"];
        }
        if ([dateDigits isEqual:@" 3"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"rd"];
        }
        if ([dateDigits isEqual:@" 4"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"th"];
        }
        if ([dateDigits isEqual:@" 5"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"th"];
        }
        if ([dateDigits isEqual:@" 6"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"th"];
        }
        if ([dateDigits isEqual:@" 7"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"th"];
        }
        if ([dateDigits isEqual:@" 8"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"th"];
        }
        if ([dateDigits isEqual:@" 9"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"th"];
        }
        if ([dateDigits isEqual:@"10"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"th"];
        }
        if ([dateDigits isEqual:@"11"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"th"];
        }
        if ([dateDigits isEqual:@"12"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"th"];
        }
        if ([dateDigits isEqual:@"13"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"th"];
        }
        if ([dateDigits isEqual:@"14"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"th"];
        }
        if ([dateDigits isEqual:@"15"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"th"];
        }
        if ([dateDigits isEqual:@"16"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"th"];
        }
        if ([dateDigits isEqual:@"17"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"th"];
        }
        if ([dateDigits isEqual:@"18"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"th"];
        }
        if ([dateDigits isEqual:@"19"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"th"];
        }
        if ([dateDigits isEqual:@"20"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"th"];
        }
        if ([dateDigits isEqual:@"21"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"st"];
        }
        if ([dateDigits isEqual:@"22"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"nd"];
        }
        if ([dateDigits isEqual:@"23"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"rd"];
        }
        if ([dateDigits isEqual:@"24"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"th"];
        }
        if ([dateDigits isEqual:@"25"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"th"];
        }
        if ([dateDigits isEqual:@"26"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"th"];
        }
        if ([dateDigits isEqual:@"27"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"th"];
        }
        if ([dateDigits isEqual:@"28"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"th"];
        }
        if ([dateDigits isEqual:@"29"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"th"];
        }
        if ([dateDigits isEqual:@"30"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"th"];
        }
        if ([dateDigits isEqual:@"31"] == TRUE) {
            currentDay = [currentDay stringByAppendingString:@"st"];
        }


        // add formated string to array
        [formatedDaysForPicker addObject:currentDay];

    }



}
1 голос
/ 06 января 2011

Ниже приведено название дня и дата дня:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEEE d"]; // name of the day and day number
dateString = [self.dateFormatter stringFromDate: aDate]; // Monday 20
[dateFormatter release]; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...