如何使用当前星期+日期填充UIPicker, [英] How To Populate UIPicker with Current Day of week + Date,

查看:102
本文介绍了如何使用当前星期+日期填充UIPicker,的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找一些代码,可以让我的uipicker像这样填充
我们在这里讨论两个组件。第一个组件需要DAY和DATE
我可以处理的第二个组件。

I am looking for some code that will allow my uipicker to be populated like this We are talking two components here. 1st component needs DAY and DATE 2nd component I can handle.

| Wednesday 20 |下午2点|

|星期四21日下午1点

| etc ...

|Wednesday 20th | 2pm |
|Thursday 21st | 1pm |
|etc...

我可以处理第二个组件,我只是找不到任何示例代码来格式化第一个组件。我知道我需要首先确定今天的DAY,然后DATE ..然后从那里构建,但希望有人可能有一些类似于此的示例代码。
任何帮助将不胜感激。

I can handle the 2nd component, I just cant find any sample code to format the first component. I understand I would need to first determine todays DAY, then DATE.. then build from there but was hoping someone may have some sample code that is similar to this. Any help would be greatly appreciated.

推荐答案

因为没有找到任何其他方式或更好的方法。我把它放在一起。它正在创建一个格式化日期数组,就像我想要的那样。它不漂亮,但我找不到更好的方法。你会认为FOR循环可以更容易地设置格式化日期的最后2个字符,但事实证明它有它的怪癖,我不想花一个小时试图纠正它,所以我采取了简单的丑陋方式。

For lack of finding any other way or a better way of doing this. I put this together. It is creating an array of formatted dates just like I wanted. Its not pretty but I couldnt find a better way of doing it. You would think a FOR loop would have been easier to set the last 2 characters on the formatted date, but that proved to have its quirks and I dont want to spend an hour trying to correct it so I took the easy ugly way out.

下面的代码生成了Day&的格式化数组。这样的日期:

星期三5日
星期四6日

星期五7日

等...

从今天的日期和日期开始。

The code below produces a formated array of Day & Date such as this:
Wednesday 5th
Thursday 6th
Friday 7th
etc...
Starting with the todays day and date.

- (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];

    }



}

这篇关于如何使用当前星期+日期填充UIPicker,的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆