[英]Getting date from weekday
我正在做這個用戶輸入幾天的應用程序(使用UITableView,星期一 - 星期日)。 然后,我需要該應用程序來確定與之匹配的日期。 假設用戶坐在星期日15日,並選擇星期一和星期二。 該應用程序將確定日期是星期一16日和星期二17日。
如何使用NSDate等進行此操作? 我知道如何使用日期找到工作日,但我希望相反。
當然,它必須是最接近的日子,就像沒有找到23日星期一,但找到第16。
希望有道理。 :-)
直接方法,不使用循環:
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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.