Ios 使用NSDate获取日期

Ios 使用NSDate获取日期,ios,iphone,uitableview,date,nsdate,Ios,Iphone,Uitableview,Date,Nsdate,我尝试了很多方法,但都失败了,希望你能帮助我实现我想做的 我正在制作一个iPad应用程序,我将在一个视图中有五个表,每个表都有一个日期作为标题/标题,采用这种格式,例如星期一20 这五张桌子是星期一到星期五。这是我不能做的一点。我想算出当前日期,然后突出显示今天的表格,显然每天都在变化 比如说,今天是9号星期四。星期四表格高亮显示,然后自动设置星期四前后其他表格的日期 想想学校的时间表/计划书/日记。星期一至星期五,每一天都标有日期 编辑:那么如果我这样做呢?如果我将此添加到您给我的代码中,如果

我尝试了很多方法,但都失败了,希望你能帮助我实现我想做的

我正在制作一个iPad应用程序,我将在一个视图中有五个表,每个表都有一个日期作为标题/标题,采用这种格式,例如星期一20

这五张桌子是星期一到星期五。这是我不能做的一点。我想算出当前日期,然后突出显示今天的表格,显然每天都在变化

比如说,今天是9号星期四。星期四表格高亮显示,然后自动设置星期四前后其他表格的日期

想想学校的时间表/计划书/日记。星期一至星期五,每一天都标有日期

编辑:那么如果我这样做呢?如果我将此添加到您给我的代码中,如果为TRUE(按下按钮),则添加七天,就像示例中的Apple表单一样。但我的问题是,什么是格里高利?我应该用什么来代替它?我在苹果的日历样本上看到过很多

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

您可以通过以下方式获得周一至周五的日期:

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);
}

您可以通过以下方式获得周一至周五的日期:

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);
}
另见:

另请参见:


Ahh好的,但是如果我使用的是您在标题ForHeaderin部分中提供的代码,我如何让它遍历每个表并给出正确的日期?例如,我有蒙太奇表、tueTable表、wedTable表等,但如何让它为正确的表指定正确的日期呢?例如,您可以为表设置标记属性(例如,从1到5),并像这样设置工作日:[comps setWeekday:1+table.tag];,或者只是“它(table==monTable)[comps setWeekday:2];嗯,谢谢你的帮助,这一切都是有意义的,但是当我添加这些if语句时,我的应用程序崩溃了。我将您的代码放在TitleForHeaderin部分中,并将这些语句添加到for循环中。f(tableView==monTable)[comps setWeekday:2];如果(tableView==tueTable)[comps setWeekday:3];如果(tableView==wedTable)[comps setWeekday:4];如果(tableView==thuTable)[comps setWeekday:5];如果(tableView==friTable)[comps setWeekday:6];另外,我是否不需要“返回”这些if语句?如果我尝试这样做,它会抛出一个错误。崩溃时会出现什么错误?在这种情况下,您不需要for循环,只需将if语句而不是it放在那些if语句中,您只需要设置适当的工作日组件值。在此之后(毕竟是if语句)-从comps创建nsdate对象,是的,您需要将日期格式化为适当的字符串值(使用NSDateFormatter)并返回该字符串。啊,好的,但是如果我使用的是您在titleForHeaderInSection中提供的代码,如何让它遍历每个表并给出正确的日期?例如,我有蒙太奇表、tueTable表、wedTable表等,但如何让它为正确的表指定正确的日期呢?例如,您可以为表设置标记属性(例如,从1到5),并像这样设置工作日:[comps setWeekday:1+table.tag];,或者只是“它(table==monTable)[comps setWeekday:2];嗯,谢谢你的帮助,这一切都是有意义的,但是当我添加这些if语句时,我的应用程序崩溃了。我将您的代码放在TitleForHeaderin部分中,并将这些语句添加到for循环中。f(tableView==monTable)[comps setWeekday:2];如果(tableView==tueTable)[comps setWeekday:3];如果(tableView==wedTable)[comps setWeekday:4];如果(tableView==thuTable)[comps setWeekday:5];如果(tableView==friTable)[comps setWeekday:6];另外,我是否不需要“返回”这些if语句?如果我尝试这样做,它会抛出一个错误。崩溃时会出现什么错误?在这种情况下,您不需要for循环,只需将if语句而不是it放在那些if语句中,您只需要设置适当的工作日组件值。在此之后(即在所有if语句之后)-从comps创建nsdate对象,是的,您需要将日期格式化为适当的字符串值(使用NSDateFormatter)并返回该字符串。