2016-12-07 121 views
0

我有兩個日期StartDate和EndDate。而週末,我想找到特定的日子,例如這兩個日期之間的星期一,星期二,星期六。以及如何更改第二個循環中的特定日期。如何找到兩日期之間的具體日期

我想添加在陣列中的多個對象流下面的代碼

NSDictionary *dict = @{ 
        @"name": @"kiran", 
        @"startdate": @"25-11-16", 
        @"SUNDAY": @"none" 
        @"MONDAY": @"monday" 
        @"TUESDAY": @"tuesday" 
        @"WEDNESDAY": @"none" 
        @"THURSDAY": @"none" 
        @"FRIDAY": @"friday" 
        @"SATURDAY": @"none" 
        @"EndDate": @"7-12-2016" 
        }; 

NSDictionary *dict1 = @{ 
        @"name": @"Bala", 
        @"startdate": @"1-11-16", 
        @"SUNDAY": @"sunday" 
        @"MONDAY": @"none" 
        @"TUESDAY": @"tuesday" 
        @"WEDNESDAY": @"none" 
        @"THURSDAY": @"thursday" 
        @"FRIDAY": @"friday" 
        @"SATURDAY": @"none" 
        @"EndDate": @"7-12-2016" 
        }; 

NSDictionary *dict2 = @{ 
        @"name": @"Sri", 
        @"startdate": @"1-12-16", 
        @"SUNDAY": @"sunday" 
        @"MONDAY": @"monday" 
        @"TUESDAY": @"tuesday" 
        @"WEDNESDAY": @"wednesday" 
        @"THURSDAY": @"thursday" 
        @"FRIDAY": @"friday" 
        @"SATURDAY": @"saturday" 
        @"EndDate": @"7-12-2016" 
        }; 

NSMutableArray *listMutableArray =[[NSMutableArray alloc] initWithObjects:dict,dict1,dict2, nil]; 

我如何可以執行兩個日期之間的循環?

我想輸出是:第一字典

25-11-2016,週五,基蘭

28-11-2016,週一,克蘭

29-11-2016,週二,基蘭

2016年2月12日,星期五,基蘭

2016年5月12日,週一,克蘭

2016年6月12日,週二,基蘭

同第二和第三字典輸出。並且所有平日都以單一陣列存儲。

+0

如果你需要的日期只有開始日期和天數,swift的本地Date實際上有一個方法addingTimeInterval(timeInterval),你可以使用它來獲取你需要的日期。 –

+0

然而,我不明白你的意思是「如何改變第二次循環中的特定日子」,你可能想發佈兩個循環的代碼,以便我理解你是如何處理這個問題的,以 –

+0

開頭。我怎樣才能做到這一點? –

回答

-1

我更習慣於快速的,所以我會用快速的,而不是objC給我的答案,它讀成僞碼,如果你要使用objC你的代碼

爲了得到你想要的結果發言權只是MutableArray

let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "dd-MM-yyyy" 

let dict = listMutableArray[0] as Dictionary 
let name = dict["name"] 
let startDate = dateFormatter.date(from: dict["startdate"]) 
let endDate = dateFormatter.date(from: dict["enddate"]) 

let totalDuration = endDate.timeIntervalSince(startDate) 
let totalDuration = totalDuration/86400 //to get days from seconds - 86400 = 60*60*24 

let weekDaysToCount:Array<Bool> = Array() 
if dict["MONDAY"] != "none" { 
    weekDaysToCount.append(true) 
} else { 
    weekDaysToCount.append(false) 
} 
... ... 
//Repeat for all days 

for i in 0..<Int(totalDuration) { 
    for validDay in weekDaysToCount { 
     startDate = startDate.addingTimeInterval(86400) //one day 
     if validDay { 
      print("\(startDate), \(name)") 
     } 
    } 
} 

注意,weekDaysToCount假設開始的第一天是星期一,當情況不是第一個項目,所以你需要調整陣列。

+0

如果你需要邏輯幫助,它總是會更好地顯示你已有的東西,我在這個代碼中做了大量的假設,不應該在實際情況下發生 –

+0

對不起,請稍後重播,請在ObjC中轉換。因爲你的代碼不可用,我在ObjC中表示讚賞。 –

+1

請不要讓我輸入你的代碼,你可以使用該邏輯來創建你的代碼。函數和參數名稱大致相似,邏輯將幫助您充分獲得結果。 –

相關問題