我正在做这个用户输入几天的应用程序(使用UITableView,星期一 - 星期日)。 然后,我需要该应用程序来确定与之匹配的日期。假设用户坐在星期日15日,并选择星期一和星期二。该应用程序将确定日期是星期一16日和星期二17日。
如何使用NSDate等进行此操作?我知道如何使用日期找到工作日,但我想要相反。
当然,它必须是最接近的日子,比如没有找到23日星期一,而是找到第16名。
希望这是有道理的。 : - )
答案 0 :(得分:2)
直接方法,不使用循环:
NSUInteger targetWeekday = ...; // 1 = Sunday, 2 = Monday, ...
// Date components for today:
NSCalendar *cal = [NSCalendar currentCalendar];
NSDate *now = [NSDate date];
NSDateComponents *comp = [cal components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit|NSWeekdayCalendarUnit
fromDate:now];
// Adjust components for target weekday:
if (targetWeekday >= comp.weekday) {
comp.day += (targetWeekday - comp.weekday);
} else {
comp.day += (targetWeekday + 7 - comp.weekday); // Assuming 7 days per week.
}
comp.weekday = targetWeekday;
// And back to NSDate:
NSDate *targetDate = [cal dateFromComponents:comp];
注:
if (targetWeekday >= comp.weekday) {
comp.day += (targetWeekday - comp.weekday);
} else {
comp.day += (targetWeekday + 7 - comp.weekday); // Assuming 7 days per week.
}
可以用更短的等效代码替换
comp.day += (targetWeekday + 7 - comp.weekday) % 7;
答案 1 :(得分:0)
您可以按照以下简单程序来完成:
NSDate
开始UITableViewCell
中的日期匹配,则表示您已完成。NSDate
(here is how it is done)中添加一天,然后返回第2步。