2015-11-03 18 views
2

假設某些任務只能在星期一,星期三,星期六和星期日(每週4天)完成。如果只考慮選定的日期,找到最終日期的邏輯是在一個工作日內計算的?

如果我在日期即11月3日星期二添加了任務,並提到我將在8天內完成任務。考慮到任務開始日是星期二,星期一已經過去了,所以本週我只剩下三天,那麼在8天后(任務完成日)找到那天和那天的邏輯是什麼。

我需要這個邏輯用於Objective C代碼。

回答

2

根據我對您的要求的理解,我用Swift編寫了一些PlayGround中的代碼。它可能會幫助你。 (你只需要將它轉換爲Objective-C)

let df = NSDateFormatter() 
df.dateFormat = "dd-MM-yyyy" 

let dateToCheck = df.dateFromString("8-11-2015") 
let comp = NSCalendar.currentCalendar().components(NSCalendarUnit.Weekday, fromDate: dateToCheck!) 

// Monday == 2 , Wednesday == 4, Saturday = 7 and Sunday = 1 

switch(comp.weekday) { 
case 2,3: 
    print("3 Day Left") 
case 4,5,6: 
    print("2 Day Left") 
case 7: 
    print("1 Day Left") 
case 1: 
    print("Last Day Left") 
default: 
    print("") 
} 

我剛剛使用了日期組件的工作日。

+1

Good work Shardul –

3

嗨,我將上面的代碼轉換爲Objective-C。

NSDateFormatter *df = [[NSDateFormatter alloc]init]; 
df.dateFormat = @"dd-MM-yyyy"; 
NSDate *dateToCheck = [df dateFromString:@"8-11-2015"]; 
NSDateComponents *comp = [[NSCalendar currentCalendar]components:NSCalendarUnitWeekday fromDate:dateToCheck]; 

// Monday == 2 , Wednesday == 4, Saturday = 7 and Sunday = 8 

if (comp.weekday == 2 || comp.weekday == 3) { 
    NSLog(@"3 Day Left"); 

}else if (comp.weekday == 4 || comp.weekday == 5 || comp.weekday == 6){ 
    NSLog(@"2 Day Left"); 

}else if (comp.weekday == 7 || comp.weekday == 1){ 
    NSLog(@"1 Day Left"); 

}else if (comp.weekday == 1){ 
    NSLog(@"Last Day Left"); 

} 
相關問題