簡體   English   中英

從工作日獲取日期

[英]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;

您可以通過以下簡單程序來完成:

  1. 從今天代表的NSDate開始
  2. 從它獲取一周中的一天( 這是如何完成的
  3. 如果星期幾與選定的UITableViewCell的日期相匹配,那么您就完成了。
  4. 否則,將一天添加到NSDate這是如何完成 ),然后返回到步驟2。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM