2016-12-07 67 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

请不要让我输入你的代码,你可以使用该逻辑来创建你的代码。函数和参数名称大致相似,逻辑将帮助您充分获得结果。 –

相关问题